2

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

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

为了解决我最初遇到的错误(“AttributeError:'Settings' 对象没有属性 'PROJECT_DIR'”),我os.path.dirname(__file__)在 settings.py 中将我的 PROJECT_DIR 设置为。这会是个问题吗?

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

“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)
4

1 回答 1

1

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

于 2013-07-24T13:46:39.270 回答