gpt4 book ai didi

python - Web2Py - 配置调度程序

转载 作者:行者123 更新时间:2023-11-30 23:07:40 27 4
gpt4 key购买 nike

我有一个用 Web2Py 编写的应用程序,其中包含一些模块。我需要定期从模块中调用一些函数,比如每天一次。我一直在尝试让调度程序为此目的工作,但不确定如何让它正常工作。我已经提到了thisthis开始吧。

我在 models 目录中有一个 scheduler.py 类,其中包含如下代码:

from gluon.scheduler import Scheduler
from Module1 import Module1

def daily_task():
module1 = Module1()
module1.action1(arg1, arg2, arg3)

daily_task_scheduler = Scheduler(db, tasks=dict(my_daily_task=daily_task))

default.py 中,我有以下调度程序代码:

def daily_periodic_task():
daily_task_scheduler.queue_task('daily_running_task', repeats=0, period=60)

[为了测试,我会在 60 秒后运行它,否则我计划每天使用 period=86400]

在我的 Module1.py 类中,我有这样的代码:

   def action1(self, arg1, arg2, arg3):
for row in db().select(db.table1.ALL):
row.processed = 'processed'
row.update_record()

我面临的问题之一是我不清楚如何让这个调度程序每天自动处理 action1 的执行。当我使用类似于以下语法启动应用程序时:python web2py.py -K my_app 它在控制台中显示:web2py Web 框架
由 Massimo Di Pierro 创建,版权所有 2007-2015
版本2.11.2-稳定+时间戳.2015.05.30.16.33.24
可用的数据库驱动程序:sqlite3、imaplib、pyodbc、pymysql、pg8000
为“my_app”启动单一调度程序...

但是,当我看到浏览器时: http://127.0.0.1:8000/my_app/default/daily_periodic_task

我只看到“无”作为屏幕上显示的文本,并且在我的数据库表中没有看到计划任务产生的任何更改。

当我看到浏览器时: http://127.0.0.1:8000/my_app/default/index

我收到一条错误消息,指出此网页不可用,基本上表明我的应用程序从未启动。

当我使用 python web2py.py 正常启动应用程序时,我的应用程序加载正常,但我在数据库表中没有看到计划任务产生的任何更改。

我无法弄清楚我在这里做错了什么以及如何正确使用 Web2Py 的调度程序。基本上,我需要知道如何正常启动我的应用程序以及在后台正确运行的计划任务。

在这方面的任何帮助将不胜感激。

最佳答案

运行 python web2py.py 启动内置 Web 服务器,使 web2py 能够响应 HTTP 请求(即向浏览器提供网页)。这与调度程序无关,不会导致任何计划任务运行。

要运行计划任务,您必须通过以下方式启动一个或多个后台工作程序:

python web2py.py -K myapp

上述内容不会启动内置网络服务器,因此无法让您访问网页。它只是启动一个可用于执行计划任务的工作进程。

另请注意,上述内容实际上并不会导致计划任何任务。要计划任务,您必须在 db.scheduler_task 表中插入一条记录,您可以通过任何插入记录的常用方法(包括使用 appadmin)或通过 scheduler.queue_task 方法(这是您在 daily_periodic_task 操作中使用的方法)以编程方式进行。

请注意,您可以通过以下方式同时启动内置 Web 服务器和调度程序工作进程:

python web2py.py -a yourpassword -K myapp -X

因此,要安排每日任务并实际执行它,您需要 (a) 启动调度程序工作线程并 (b) 安排任务。您可以通过访问 daily_periodic_task 操作来安排任务,但请注意,您只需访问该操作一次,因为一旦计划了任务,它就会无限期地保持有效(假设您已设置 重复=0)。

如果任务似乎无法正常工作,则任务本身可能存在问题,从而导致错误。

关于python - Web2Py - 配置调度程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32084828/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com