Web2py调度程序 - 连续重新运行任务并在启动时添加任务的最佳实践

时间:2016-07-04 22:53:56

标签: python scheduled-tasks web2py

我想在app启动时向队列中添加一个任务,目前在主 db.py 文件中添加scheduler.queue_task(...)。这不太理想,因为我必须在此文件中定义任务函数。

我也希望这项任务能够连续每2分钟重复一次。

我想知道最佳做法是什么?

2 个答案:

答案 0 :(得分:2)

As stated in web2py doc,要连续重新运行任务,您只需在任务排队时指定它:

scheduler.queue_task(your_function,
                     pargs=your_args,
                     timeout = 120,  # just in case
                     period=120,     # as you want to run it every 2 minutes
                     immediate=True, # starts task ASAP
                     repeats=0       # just does the infinite repeat magic
                     )

要在启动时排队,您可能希望以这种简单的方式使用web2py cron feature

@reboot root    *your_controller/your_function_that_calls_queue_task

不要忘记启用此功能(-Y,文档中的更多详细信息)。

IMO:你的问题很有意思,不值得投票,我几天前问自己! :)

答案 1 :(得分:0)

似乎在web2py中没有真正的机制。

在启动时可以做一些不断重复任务或安排的黑客,但据我所知,web2py调度程序需要很多工作。

最好的选择就是放弃这个web2py功能,并使用celery或类似功能进行高级用法。