运行定期任务
我不确定到目前为止您尝试了什么,或者您的settings.py
文件是什么样的,但这里有一些方法可以让 djcelery 运行计划任务。
1)在你的tasks.py
,创建一个任务并使用celery.decorators.periodic_task
装饰器。例如
from celery.task.schedules import crontab
from celery.decorators import periodic_task
@periodic_task(run_every=crontab(hour=”*”, minute=”*”, day_of_week=”*”))
def a_periodic_task():
print “Hello World!”
或者
@celery.decorators.periodic_task(run_every=datetime.timedelta(minutes=5))
def a_periodic_task():
print “Hello World!”
2)在您的celery.conf
文件中使用如下CELERYBEAT_SCHEDULE
设置:
from datetime import timedelta
CELERYBEAT_SCHEDULE = {
"runs-every-30-seconds": {
"task": "tasks.add",
"schedule": timedelta(seconds=30),
"args": (16, 16)
},
}
您可以在定期任务文档中了解更多相关信息。
尽管请记住,您必须通过以下方式以节拍模式启动 celery :
python manage.py celeryd -B
并检查您是否已完成所有安装步骤,包括添加djcelery
到您的INSTALLED_APPS
并运行python manage.py syncdb
(或者python manage.py migrate djcelery
如果您使用的是南)
部署
celery 文档中有一个很好的部分介绍了 celery 进程的守护进程以进行部署,包括节拍模式的示例django 配置。
从文档:
# Where the Django project is.
CELERYBEAT_CHDIR="/opt/Project/"
# Name of the projects settings module.
export DJANGO_SETTINGS_MODULE="settings"
# Path to celerybeat
CELERYBEAT="/opt/Project/manage.py celerybeat"
# Extra arguments to celerybeat
CELERYBEAT_OPTS="--schedule=/var/run/celerybeat-schedule"