【问题标题】:Django-cron not executing jobDjango-cron 不执行作业
【发布时间】:2013-07-23 18:47:35
【问题描述】:

我正在尝试使用Django-cron 在我的 Django 服务器上定期运行脚本。似乎 cronScheduler 正在将测试类注册为“类运行”打印到我的终端,但我没有发现任何表明作业正在运行的迹象(即我没有看到“作业运行”打印到终端)。如果我不应该依赖打印来了解作业是否正在运行,我还观察了数据库中的 django_cron_job 表几分钟,以查看在最初向我的服务器发送请求后作业的“last_run”值是否发生了变化但我发现它没有。

您知道:每次我测试时,我都会通过一个请求访问我的服务器以启动作业,我已将设置文件中的 CRON_POLLING_FREQUENCY 修改为低于我指定的 run_every 值对于这项工作,并确保根据这篇帖子的建议将工作设置为排队:Similar problem

为了解决我最初遇到的错误(“AttributeError: 'Settings' object has no attribute 'PROJECT_DIR'”),我在 settings.py 中将我的 PROJECT_DIR 设置为 os.path.dirname(__file__)。会不会有问题?

当我启动服务器时,我也得到了以下信息,但我已经调查过了,找不到任何问题的原因:

“RuntimeWarning:DateTimeField 在时区支持处于活动状态时收到了一个简单的日期时间 (2013-07-23 13:55:56.016085)。”

另外需要注意的是,我经常在重新启动服务器并通过请求访问服务器几秒钟后将以下打印输出检索到我的终端,但它只发生一次,直到我重新启动服务器:

"已经在执行 哎呀! pid 为 17099 的进程未运行。 修复数据库中的状态。 验证模型..."

我的 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)

【问题讨论】:

    标签: python django django-cron


    【解决方案1】:

    知道了:发布后我再次查看了几次,发现数据库中的 last_run 日期比我当前时间早了几个小时,所以我的工作认为不需要开始,直到它最终达到那个时间 + 我的 run_every 规范。所以 DateTimeField RuntimeWarning 毕竟是问题所在。我通过手动更改 last_run 日期对其进行了测试,并按预期得到了打印输出。现在我只需要弄清楚如何解决这个时区相关的问题。希望这可以帮助别人!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-04
      • 1970-01-01
      • 1970-01-01
      • 2019-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多