【发布时间】:2015-08-19 00:53:23
【问题描述】:
我有一个用 Web2Py 编写的应用程序,其中包含一些模块。我需要定期从模块中调用一些函数,比如每天一次。我一直在尝试让调度程序为此目的工作,但不确定如何使其正常工作。我已经参考了this 和this 来开始使用。
我在模型目录中有一个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 Framework
Created by Massimo Di Pierro, Copyright 2007-2015
Version 2.11.2-stable+timestamp.2015.05.30.16.33.24
Database drivers available: sqlite3, imaplib, pyodbc, pymysql, pg8000
starting single-scheduler for "my_app"...
但是,当我在以下位置看到浏览器时: http://127.0.0.1:8000/my_app/default/daily_periodic_task
我只是在屏幕上看到“无”作为文本显示,我没有看到我的数据库表中的计划任务产生的任何更改。
当我在以下位置看到浏览器时: http://127.0.0.1:8000/my_app/default/index
我收到一条错误消息,指出 This web page is not available,基本上表明我的应用程序从未启动。
当我使用python web2py.py 正常启动我的应用程序时,我的应用程序加载正常,但我没有在我的数据库表中看到计划任务产生的任何更改。
我无法弄清楚我在这里做错了什么以及如何正确使用 Web2Py 的调度程序。基本上,我需要知道如何正常启动我的应用程序以及在后台正常运行的计划任务。
在这方面的任何帮助将不胜感激。
【问题讨论】: