web2py - 获取当前正在运行的任务的ID

时间:2013-08-30 13:30:33

标签: web2py scheduler

我正在尝试使用web2py的调度程序运行后台作业。 除了处理作业外,我还需要保存提交作业的用户的信息。

我创建了一个users_task表,用于存储提交的user_name和task_id。

以下是示例代码(在scheduler.py中),

def task_add(user_name):
task_id = my_id # get the current task id ??
db.person.insert(name=user_name,task=task_id)
# do something

在代码的第二行,我需要获取当前任务的id。

我正在使用

排队任务
scheduler.queue_task('task_add', pvars=dict(user_name))

是否可以获取当前正在运行的任务的ID? 另外,请建议是否有其他方法可以实现相同目的。

2 个答案:

答案 0 :(得分:0)

这可能会有所帮助:

current_task = db(db.scheduler_task.task_name =='task_add',db.scheduler_task.status!='FAILED')。select()。last()    current_task_id = current_task.id

可以从db.scheduler_task表中获取有关当前运行任务的所有详细信息,并且可以从db.scheduler_run表中获取有关任务输出的信息。

答案 1 :(得分:0)

好吧,在深入研究源代码后,我找到了解决方案。 在gluon / scheduler.py中,

def executor(queue, task, out):
     W2P_TASK = Storage({'id' : task.task_id, 'uuid' : task.uuid})
    _env.update({'W2P_TASK' : W2P_TASK})

W2P_TASK是一个环境变量。所以,要获得任务ID,

task_id = W2P_TASK.id