我在task.py中创建了计划任务但它似乎永远不会运行。我重新启动了我的工作人员,正常任务运行得很好。由于我是新手,我错过了什么,我的设置中是否有我需要的设置?
我没有收到任何错误,这是我的task.py
from celery.task import Task
from celery.decorators import task
from celery.task import PeriodicTask
from datetime import timedelta
class ProcessScheduledRequests(PeriodicTask):
run_every = timedelta(minutes=5)
def run(self, **kwargs):
process_something()
答案 0 :(得分:2)
我不确定您到目前为止尝试了什么,或者您的settings.py
文件是什么样的,但这里有一些方法可以让djcelery运行计划任务。
1)在tasks.py
中,创建一个任务并使用celery.decorators.periodic_task
装饰器。 e.g。
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)
},
}
您可以在periodic task documentation。
中详细了解相关信息虽然请记住你必须在beat mode开始芹菜:
python manage.py celeryd -B
并检查您是否完成了所有installation steps,包括将djcelery
添加到INSTALLED_APPS
并运行python manage.py syncdb
(或python manage.py migrate djcelery
如果您&# 39;重新使用南方)
celery documentation有一个很棒的部分可以帮助您部署芹菜流程,包括example django configuration for beat mode。
来自文档:
# 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"