django-芹菜-通过django-admin执行任务



我正在尝试用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

希望这能有所帮助。

最新更新