Я разрабатываю веб-приложение с Django, которое использует Celery для обработки асинхронных задач, особенно для транзакционных электронных писем.
Одна из моих задач по электронной почте запланирована с опцией ETA, но она выполняется несколько раз параллельно, что приводит к цепочке писем, что очень раздражает. Я не могу понять, почему именно. Я дважды проверил свой код Django и уверен, что он публикуется только один раз.
Я использую Redis в качестве результата брокера/бэкенда.
Мой демон Celery размещен на Heroku и запускается с помощью этой команды:
python manage.py celeryd -E -B --loglevel=INFO
Спасибо за вашу помощь.
РЕДАКТИРОВАТЬ: я нашел правильное решение здесь благодаря парню на IRC-канале #celery: http://loose-bits.com/2010/10/distributed-task-locking-in-celery.html