Icon

This is the documentation for an older version of Qube. The latest version of the documentation can be found here: Qube

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
titleUsing the "qube" callback language
linenumberstrue
languagepython
frameRange = '1-10'
 
jobA = {
	'name': 'my ribgen job',
	'label': 'ribgenLabel',
	'prototype': 'cmdrange',
	'package': {
		'cmdline': 'my ribgen command...'
	},
	'agenda': qb.genframes(frameRange),
}

jobB = {
	'name': 'my render job',
	'label': 'render',
	'status': 'blocked',
	'prototype': 'cmdrange',
	'package': {
		'cmdline': 'my render command...'
	},
	'agenda': qb.genframes(frameRange),
}

callbacks = []
for work in jobB['agenda']:
	work['status'] = 'blocked',
	
	callbacks.append(
		{ 
			'triggers': 'complete-work-ribgenLabel-%s' % work['name'],
			'language': 'qube',
			'code': 'unblock-work-self',
		}
	)
]
jobB['callbacks'] = callbacks
 
qb.submit( [jobA, jobB] )
Code Block
titleUsing the "python" callback language is identical to the first example, except the callback's "language" and "code" is different
linenumberstrue
languagepython
jobA = {
	.
	.
	.
}
 
jobB = {
	.
	.
	.
}
 
callbacks = []
for work in jobB['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'

	callbacks.append(
		{ 
			'triggers': 'complete-work-ribgenLabel-%s' % frameNumber,
			'language': 'python',
			'code': cbCode,
		}
	)
]

jobB['callbacks'] = callbacks
 
qb.submit( [jobA, jobB] )

JobC waits for jobA and jobB

This can be done using any of the callback languages, the only difference is the triggers value

Code Block
titleUsing the "python" callback language is identical to the first example, except the callback's "language" and "code" is different
linenumberstrue
languagepython
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] )