这是我的周期性任务:
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启动了芹菜。
尽管根据代码仍未在命令提示符上打印,但应该打印时间。
知道这里出了什么问题吗?似乎很直接。
答案 0 :(得分: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
答案 1 :(得分:0)
检查系统时区是否与Django时区相同。
对于Django:从设置文件中更改它。
对于linux操作系统:改变它:ln -s /usr/share/zoneinfo/America/Chicago /etc/localtime