我按照这里的说明进行操作:
http://celery.readthedocs.org/en/latest/userguide/periodic-tasks.html#crontab-schedules
我应该能够做到以下几点:from celery.schedules import crontab
在settings.py
我有:
from kombu import serialization
serialization.registry._decoders.pop("application/x-python-serialize")
import djcelery
djcelery.setup_loader()
from celery.schedules import crontab
...
CELERYBEAT_SCHEDULE = {
'first_task': {
'task': 'apps.icecream.tasks.sync_flavors',
'schedule': crontab(minute='*/30', hour='1, 3, 6, 8-20, 22')
},
'second_task': {
'task': 'apps.robots.tasks.run_robots',
'schedule': crontab(minute='*/6')
}
}
但是,我收到一个错误:“没有名为schedules的模块”
如果我切换到另一种调度方式,使用timedelta,那么一切都很好,我可以让我的周期性任务运行:
CELERYBEAT_SCHEDULE = {
'first_task': {
'task': 'apps.icecream.tasks.sync_flavors',
'schedule': timedelta(minutes=30)
},
'second_task': {
'task': 'apps.robots.tasks.run_robots',
'schedule': timedelta(minutes=6)
}
}
为什么我不能使用crontab方法?
答案 0 :(得分:43)
这是因为您在celery.py
的同一个程序包中有一个settings.py
文件,该文件会影响全局celery
包。
要解决此问题,请在settings.py:
的开头插入以下字符串from __future__ import absolute_import
希望它有所帮助!