...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
jobA = { 'label': 'ribGen', . . } jobB = { 'label': 'render', . . } jobC = { 'label': 'composite' . . } callbacks = [] for work in jobC['agenda']: work['status'] = 'blocked', frameNumber = work['name'] # the agenda item's callback should unblock both itself and the job cbCode = 'jobId = qb.jobid()\n' cbCode += 'qb.workunblock("%%s:%s" %% jobId)\n' % frameNumber cbCode += 'qb.unblock(jobId)\n' triggerStr = 'complete-work-ribgen-%s' % frameNumber' triggerStr += ' AND ' triggerStr += 'complete-work-render-%s' % frameNumber' callbacks.append( { 'triggers': triggerStr, 'language': 'python', 'code': cbCode, } ) ] jobB['callbacks'] = callbacks qb.submit( [jobA, jobB] ) |
JobD waits for either (jobA and jobB) or jobC
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
jobA = {
'label': 'ribGen',
.
.
}
jobB = {
'label': 'render',
.
.
}
jobC = {
'label': 'composite',
.
.
}
jobD = {
'label': 'sendToDailies',
.
.
}
callbacks = []
for work in jobD['agenda']:
work['status'] = 'blocked',
frameNumber = work['name']
# the agenda item's callback should unblock both itself and the job
cbCode = 'jobId = qb.jobid()\n'
cbCode += 'qb.workunblock("%%s:%s" %% jobId)\n' % frameNumber
cbCode += 'qb.unblock(jobId)\n'
triggerSt = '('
triggerStr += 'complete-work-ribgen-%s' % frameNumber'
triggerStr += ' AND '
triggerStr += 'complete-work-render-%s' % frameNumber'
triggerStr += ')'
triggerStr += ' OR '
triggerStr = ''complete-work-composite-%s' % frameNumber'
callbacks.append(
{
'triggers': triggerStr,
'language': 'python',
'code': cbCode,
}
)
]
jobB['callbacks'] = callbacks
qb.submit( [jobA, jobB] ) |