python.py 文件源码

python
阅读 31 收藏 0 点赞 0 评论 0

项目:girder_worker 作者: girder 项目源码 文件源码
def run(task, inputs, outputs, task_inputs, task_outputs, **kwargs):
    custom = imp.new_module('__girder_worker__')

    custom.__dict__['_job_manager'] = kwargs.get('_job_manager')
    custom.__dict__['_tempdir'] = kwargs.get('_tempdir')
    custom.__dict__['_celery_task'] = kwargs.get('_celery_task')

    for name in inputs:
        custom.__dict__[name] = inputs[name]['script_data']

    if task.get('write_script', kwargs.get('write_script', False)):
        debug_path = tempfile.mktemp()
        with open(debug_path, 'wb') as fh:
            fh.write(task['script'])

        with open(debug_path, 'r') as fh:
            exec fh in custom.__dict__

    else:
        try:
            exec task['script'] in custom.__dict__
        except Exception, e:
            trace = sys.exc_info()[2]
            lines = task['script'].split('\n')
            lines = [(str(i+1) + ': ' + lines[i]) for i in xrange(len(lines))]
            error = (
                str(e) + '\nScript:\n' + '\n'.join(lines) +
                '\nTask:\n' + json.dumps(task, indent=4)
            )
            raise Exception(error), None, trace

    for name, task_output in task_outputs.iteritems():
        outputs[name]['script_data'] = custom.__dict__[name]
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号