PipelineFX Forum
Qube! => Developer Customization => Topic started by: dandymite on May 17, 2013, 02:17:10 PM
-
Using Qube 5.5.1 and trying to use callbacks with python but can't get it to work.
Here my simple python submit script:
import qb
myjob = qb.Job()
myjob['name'] = 'Testjob_Callback'
myjob['prototype'] = 'cmdline'
myjob['priority'] = '1'
myjob['retry'] = 3
myjob['cpus'] = '1'
myjob['hosts'] = 'mws021'
myjob['package'] = {'cmdline' : 'dir'}
myjob['callbacks'] = [{ 'triggers' : 'complete-job-self',
'language' : 'python',
'code' : str("print 'CALLBACK EXECUTED'"),
'maximum' : '1'
}]
qb.submit(myjob)
This is what I see in the Callback tab of the submitted job:
count : 1
code : print 'CALLBACK EXECUTED'
language : python
triggers : complete-job-self
max : 1
user : myusername
ready : complete-job-self 1
id : 1
In the manual it is mentioned that:
"Print statements in callbacks are output to the *.cb file in the job
-
Which OS are you using? I seem to recall that the "print" statements don't end up in the .cb files on a particular OS (perhaps Windows).
What I've done in the past is to print to another filehandle instead of stdout (and note that the file will be created on the supervisor):
job = {
'prototype': 'cmdline',
'name': 'python callback test',
'package': {
'cmdline': 'hostname',
},
'callbacks': [
{
'language': 'python',
'triggers': 'done-job-self',
'code': '''
try:
import sys
fh = open('c:/temp/err.txt', 'w')
fh.close()
fh = open('c:/temp/foo.txt', 'w')
fh.write('Hello from job id %s\\n' % qb.jobid())
fh.write('sys.version : %s\\n' % sys.version)
fh.write('sys.version info : %s\\n' % '.'.join([str(x) for x in sys.version_info]))
fh.write('sys.executable : %s\\n' % sys.executable)
fh.close()
except Exception, e:
fh = open('c:/temp/err.txt', 'w')
fh.write('Error from job id %s\\n' % qb.jobid())
fh.write('%s\\n' % e)
fh.close()
'''
}
]
}
print '%(id)s: %(name)s' % qb.submit(job)[0]
-
Thank you very much. That will help me with my problem.