1

我正在尝试使用 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?另外,请建议是否有其他方法可以实现相同的目标。

4

2 回答 2

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
于 2013-09-05T10:42:09.450 回答
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 表中获取有关任务输出的信息。

于 2013-09-03T12:16:35.070 回答