【发布时间】:2017-04-28 17:17:02
【问题描述】:
我正在使用Celery 4.0.1 和Django 1.10,但我在安排任务时遇到了麻烦(运行任务工作正常)。这是芹菜的配置:
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myapp.settings')
app = Celery('myapp')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
app.conf.BROKER_URL = 'amqp://{}:{}@{}'.format(settings.AMQP_USER, settings.AMQP_PASSWORD, settings.AMQP_HOST)
app.conf.CELERY_DEFAULT_EXCHANGE = 'myapp.celery'
app.conf.CELERY_DEFAULT_QUEUE = 'myapp.celery_default'
app.conf.CELERY_TASK_SERIALIZER = 'json'
app.conf.CELERY_ACCEPT_CONTENT = ['json']
app.conf.CELERY_IGNORE_RESULT = True
app.conf.CELERY_DISABLE_RATE_LIMITS = True
app.conf.BROKER_POOL_LIMIT = 2
app.conf.CELERY_QUEUES = (
Queue('myapp.celery_default'),
Queue('myapp.queue1'),
Queue('myapp.queue2'),
Queue('myapp.queue3'),
)
然后在 tasks.py 我有:
@app.task(queue='myapp.queue1')
def my_task(some_id):
print("Doing something with", some_id)
在views.py中我想安排这个任务:
def my_view(request, id):
app.add_periodic_task(10, my_task.s(id))
然后我执行命令:
sudo systemctl start rabbitmq.service
celery -A myapp.celery_app beat -l debug
celery worker -A myapp.celery_app
但该任务从未被安排。我在日志中看不到任何内容。这项任务正在发挥作用,因为如果在我看来我这样做了:
def my_view(request, id):
my_task.delay(id)
任务被执行。
如果在我的配置文件中,如果我手动安排任务,这样它就可以工作:
app.conf.CELERYBEAT_SCHEDULE = {
'add-every-30-seconds': {
'task': 'tasks.my_task',
'schedule': 10.0,
'args': (66,)
},
}
我只是无法动态安排任务。有什么想法吗?
【问题讨论】:
标签: python django scheduled-tasks celery celerybeat