The next step is to build a more robust dependency system. Building on what we have learnt in the previous tutorials this tutorial will:
- Give example of JobLabel for linking jobs
- Give example of Dependency linking to JobLabel
- Shows correct dependency graph in the Qube! GUI
Feel free to download and run the script below. It sets up a job that will :
- Create a Parent "Sleep job" with a range of 60
- Create a Blocked Child "Sleep job" that links to the Parent job and waits for a complete status before starting
This script differs from the rest quite a lot:
task = []
To create a list of jobs that are submitted:
task.append(job)
Combines the list of jobs for final submission with:
listOfSubmittedJobs = qb.submit(task)
With this method the jobs are not submitted per "job = {}" instead combined and submitted once all tasks have completed:
job['label']= 'ParentLabel'
This creates a internal label for the job which is assessed at submission time:
job['dependency'] = 'link-complete-job-ParentLabel'
The Child job then uses the internal label to link to the Parent job.
Here are some examples of how you can link the jobs:
job['dependency'] = 'link-complete-job-ParentLabel'
This will run once the Parent job is complete.
job['dependency'] = 'link-failed-job-ParentLabel'
This will run once the Parent job is failed.
job['dependency'] = 'link-killed-job-ParentLabel'
This will run if the Parent job has been killed.
job['dependency'] = 'link-done-job-ParentLabel'
This will run once the Parent job returns a status of done. Done means if the job completes,fails or has been killed.
You can also link jobs by different types.
job['dependency'] = 'link-done-work-ParentLabel'
This will run depending on the status of the jobs work.
job['dependency'] = 'link-done-subjob-ParentLabel'
This will run depending on the status of the jobs subjobs.