При использовании Celery, Docker, RabbitMQ и Django (с django-celery-results
и django-celery-beat
) я могу загрузить простую задачу, следуя инструкции .
Однако при внесении изменений в задачу и перезагрузке сервера (docker-compose down
, docker-compose up
) изменения не отражаются. Кеширует ли Celery задачи где-нибудь / как мне их перезагружать в среде разработчиков? Учебник устанавливает CELERY_CACHE_BACKEND = 'django-cache'
, но я бы предположил, что это уничтожено docker-compose down
?
Например, удаление задачи из обоих tasks.py и CELERY_BEAT_SCHEDULE
в settings.py не предотвращает это загрузка при перезапуске сервера.
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()
proj / __ init __ .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
}
}