我正在尝试用django设置芹菜。
所有设置都设置好了,如果我手动启动任务,它就会工作。(所有这些都发生在我的本地开发服务器上)
mytask.apply_async()
然后我尝试在admin中设置一些任务。我将mytask设置为每5分钟运行一次,以便进行测试。
但5分钟后,什么也没发生。为了让这件事成功,还应该做些什么?
Django芹菜节拍需要通过pip安装才能运行定期任务。安装后,进行迁移和迁移。
设置.py
from __future__ import absolute_import
import os
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'djcelery',
'django_celery_beat',
'taskname'
]
import djcelery
djcelery.setup_loader()
CELERYBEAT_SCHEDULER='djcelery.schedulers.DatabaseScheduler'
#BROKER_URL = 'django://'
BROKER_URL = 'amqp://myuser:mypassword@localhost:5672/myvhost'
from celery.schedules import crontab
CELERY_BEAT_SCHEDULE = {
'add': {
'task': 'proj.taskfilename.taskname',
'schedule': crontab(minute=0, hour='*'),
'args': (5,5)
}
}
这使得任务每1小时运行一次。
要自动运行任务,我们需要在单独的终端中运行Worker和beat。在manage.py的项目位置打开两个终端,并在一个终端中运行每个命令。
celery -A proj worker -l info
celery -A proj beat -l info
工作人员一直在等待队列中的下一个任务。beat将周期性任务发送到队列。Worker异步运行它们。
或者你可以从一个终端运行它:
celery -A proj worker -B -l info
希望这能有所帮助。