【发布时间】:2020-08-01 05:23:57
【问题描述】:
当使用 Celery、Docker、RabbitMQ 和 Django(使用 django-celery-results 和 django-celery-beat)时,我可以在 tutorial 之后加载一个简单的任务。
但是,当我对任务进行更改并重新加载服务器(docker-compose down、docker-compose up)时,这些更改不会反映出来。 Celery 是否在某处缓存任务/在开发环境中如何重新加载它们?本教程设置了CELERY_CACHE_BACKEND = 'django-cache',但我认为这已被docker-compose down 破坏?
例如,从 settings.py 中的 tasks.py 和 CELERY_BEAT_SCHEDULE 中删除任务不会阻止它在服务器重新启动时加载。
celery.py:
from __future__ import absolute_import, unicode_literals
import os
from celery import Celery
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'proj.settings')
app = Celery('proj')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
项目/__ 初始化 __ .py:
from __future__ import absolute_import, unicode_literals
from .celery import app as celery_app
__all__ = ('celery_app',)
tasks.py:
from __future__ import absolute_import, unicode_literals
from celery import shared_task
@shared_task
def hello_world():
return print('hello world!')
settings.py:
CELERY_BROKER_URL = 'pyamqp://rabbitmq:5672'
CELERY_RESULT_BACKEND = 'django-db'
CELERY_CACHE_BACKEND = 'django-cache'
CELERY_BEAT_SCHEDULER = 'django_celery_beat.schedulers:DatabaseScheduler'
CELERY_BEAT_SCHEDULE = {
'hello':
{
'task': 'proj.tasks.hello_world',
'schedule':
crontab() # execute every minute
}
}
【问题讨论】:
标签: python django docker celery django-celery