Использование Celery и Redis с моим приложением Django - PullRequest
0 голосов
/ 05 марта 2019

Я хотел бы задать вопрос по Celery и Redis с моим Django приложением. Как я объясню более подробно, я получаю некоторые случайные проблемы с этими приложениями.

Мое окружение:

Я использую:

  • Джанго 1.11.20
  • django-redis 4.7.0 / redis> = 2.10.5
  • сельдерей 4.2.1

Мой локальный контекст: (виртуальная машина Ubuntu)

У меня есть задача сельдерея, которая отправляет электронное письмо с файлом экспорта, когда этот файл превышает 70 000 объектов. Процесс работает нормально, и я получаю ожидаемое письмо со ссылкой для загрузки моего файла.

Сельдерей запускается вручную : celery -A main worker -l info

Мой контекст разработки: (сервер FreeBSD)

У меня точно такой же процесс. Но сельдерей демонизируется на моем сервере. Я могу выполнить обслуживание сельдерея с: service celeryd_app start

Когда я запускаю задачу сельдерея, иногда мне нужно несколько раз нажать кнопку, чтобы увидеть:

Received task: app.tasks.get_xls_export[64d31ba5-73d9-4048-b19a-a4902fd904d7]

Но основная проблема, с которой я столкнулся, заключается в следующем: моя задача отправить электронное письмо с определенным шаблоном электронной почты, расположенным в /templates/email/email.html.

Иногда он отправляет этот шаблон электронной почты, а иногда отправляет старый шаблон, которого нет в моем проекте.

Мой вопрос:

Возможно ли, что Celery/Redis сохранил в памяти старый шаблон? Есть ли способ очистить кеш для моего конкретного сервиса? Потому что у меня есть другие сервисы сельдерея на моем сервере в соответствии с другими приложениями.

Большое спасибо!

1 Ответ

0 голосов
/ 05 марта 2019

Похоже, у вас есть отложенные задачи, если вы хотите очистить отложенные задачи

Вы можете сделать это

from main.celery import app
app.control.purge()

или вы можете сделать celery -A main purge

Если вы хотите отменить задания определенной очереди, вы можете сделать

celery amqp queue.purge <queue name>

...