django芹菜 - 任务通过django管理员

问题描述 投票:1回答:1

我正在尝试用django建立芹菜。

所有设置都已设置,如果我手动启动任务,它将正常工作。 (所有发生在我的本地开发服务器上)

mytask.apply_async()

然后我尝试在管理员中设置一些任务。我将mytask设置为每5分钟运行一次以进行测试。

但是5分钟后,什么也没发生。为了让这件事有用,应该做些什么呢?

python django celery django-celery
1个回答
0
投票

我知道这有点晚了。但为了回答你的问题。

需要通过pip安装Django-celery-beat以运行定期任务。安装后,进行迁移和迁移。

settings.朋友

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将周期性任务发送到队列。工作者异步运行它们。

或者您可以从一个终端运行它:

celery -A proj worker -B -l info

希望这可以帮助。

© www.soinside.com 2019 - 2024. All rights reserved.