Web2py 调度程序 - 连续重新运行任务和在启动时添加任务的最佳实践
Web2py scheduler - Best practices to rerun task continuously and to add task at startup
我想在应用程序启动时向队列中添加一个任务,目前正在向 db.py 主文件中添加一个 scheduler.queue_task(...)
。这并不理想,因为我必须在此文件中定义任务函数。
我也希望任务连续每2分钟重复一次
我想知道这方面的最佳做法是什么?
在 web2py 中似乎没有真正的机制。
有一些 hack 可以在启动时连续重复任务或安排,但据我所知,web2py 调度程序需要大量工作。
最好的选择是放弃此 web2py 功能并使用 celery 或类似的高级用法。
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:你的问题很有趣,不值得投反对票,我几天前问过自己! :)
我想在应用程序启动时向队列中添加一个任务,目前正在向 db.py 主文件中添加一个 scheduler.queue_task(...)
。这并不理想,因为我必须在此文件中定义任务函数。
我也希望任务连续每2分钟重复一次
我想知道这方面的最佳做法是什么?
在 web2py 中似乎没有真正的机制。
有一些 hack 可以在启动时连续重复任务或安排,但据我所知,web2py 调度程序需要大量工作。
最好的选择是放弃此 web2py 功能并使用 celery 或类似的高级用法。
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:你的问题很有趣,不值得投反对票,我几天前问过自己! :)