3

这是我的定期任务:

from celery.task import PeriodicTask
from celery.registry import tasks
from datetime import timedelta
from datetime import datetime

class MyTask(PeriodicTask):
    run_every = timedelta(minutes=1)

    def run(self, **kwargs):
        self.get_logger().info("Time now: " + datetime.now())
        print("Time now: " + datetime.now())

tasks.register(MyTask)

我在 python manage.py runserver 启动了我的 django 服务器,还使用 ​​python manage.py celeryd -B 启动了 celery。

尽管根据代码,命令提示符上仍然没有打印任何内容,应该已经打印了时间。

知道这里出了什么问题吗?看起来很直截了当。

4

2 回答 2

1

你应该有类似的东西:

CELERYBEAT_SCHEDULE = {
    'proc': {
        "task": "tasks.processing",
        "schedule": timedelta(seconds=60),
        },
    }

在您celeryconfig.py或 django 的 settings.py 中查看完整文档http://docs.celeryproject.org/en/latest/userguide/periodic-tasks.html

于 2013-01-06T12:22:53.513 回答
0

检查您的系统时区是否与 Django 时区相同。

对于 Django:从设置文件中更改它。

对于 linux 操作系统:更改如下:ln -s /usr/share/zoneinfo/America/Chicago /etc/localtime

于 2013-06-22T00:01:35.230 回答