我正在尝试使用Django-cron在我的Django服务器上定期运行一个脚本。似乎cronScheduler正在将测试类注册为“类run”打印到我的终端,但我没有发现作业正在运行的任何迹象(也就是说,我没有看到打印到终端的“作业运行”)。如果我不应该依赖打印来知道作业是否正在运行,我还会在数据库中观察django_cron_job表几分钟,查看作业的"last_run“值在最初向服务器发送请求后是否发生了变化,但我发现没有变化。
请注意:每次测试时,我都使用一个请求访问服务器,以便作业启动,我修改了设置文件中的CRON_POLLING_FREQUENCY,使其低于我为作业指定的run_every值,并确保根据这个帖子的建议:相似问题将作业设置为排队。
为了解决我最初得到的一个错误("AttributeError:‘设置’对象没有属性' PROJECT_DIR '"),我将PROJECT_DIR设置为settings.py中的os.path.dirname(__file__)。这会不会是个问题?
在启动服务器时,我还会得到以下内容,但我已经对其进行了调查,并没有找到任何原因说明问题所在:
"RuntimeWarning: DateTimeField收到了一个天真的日期时间(2013-07-23 13:55:56.016085),而时区支持是活跃的。“
唯一值得注意的是,在重新启动服务器并通过请求访问服务器几秒钟后,我通常会将下列打印输出检索到我的终端,但在重新启动服务器之前只会发生一次:
“已经在执行Oops!pid 17099的进程没有运行。在db中修复状态。验证模型.”
我的cron.py文件:
from django_cron import cronScheduler, Job, HOUR, DAY, WEEK, MONTH
import sys
class Test(Job):
print "class ran"
run_every=2
def job(self):
print "job ran"
cronScheduler.register(Test)发布于 2013-07-24 13:46:39
明白了:在发布几次之后,我再次查看了一些内容,并注意到数据库中的last_run日期是我当前时间的前几个小时,所以我的工作不认为它需要开始,直到它最终达到了那个时间+我的run_every规范。因此,DateTimeField RuntimeWarning毕竟是个问题。我通过手动更改last_run日期对其进行了测试,并得到了预期的打印输出。现在我只需要弄清楚如何解决这个与时区相关的问题。希望这能帮到别人!
https://stackoverflow.com/questions/17818553
复制相似问题