Получение многократного повторения задач Celery в производстве
Я новичок в Celery, и я создал простое приложение, которое подключается к серверу веб-сокетов для получения задач и их планирования с помощью Celery. Моя очередь Celery отображает задачи в зависимости от типа сообщения (сначала текстовые сообщения, а затем кнопки, которые запускают следующую задачу при нажатии на одну из них). Локально все выполняется, как и ожидалось. Но в производственной среде некоторые задачи повторяются несколько раз, особенно триггеры (кнопки). В своей производственной среде я создал веб-сервис для Django и один фоновый рабочий Celery с базой данных Redis.
Вот команды, которые я использовал для запуска Celery worker и beat в production:
# Start command (celery worker and beat)
celery -A bot.celery worker --beat --scheduler django --loglevel=info --concurrency 4
# Start command (Django)
daphne -b 0.0.0.0 bot.asgi:application
Мои настройки Django и Celery:
CELERY_BROKER_URL = "redis://localhost:6379/0" # localhost replaced with the internal Redis URL in production
CELERY_RESULT_BACKEND = "redis://localhost:6379/1" # localhost replaced with the internal Redis URL in production
TIME_ZONE = 'UTC'
CELERY_ENABLE_UTC = True
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_RESULT_SERIALIZER = 'json'
CELERY_TASK_SERIALIZER = 'json'
CELERY_TIMEZONE = 'UTC'
ASGI_APPLICATION = 'bot.asgi.application'
Некоторый рабочий вывод:
Ваша помощь очень ценится!
Поскольку вы используете Redis в качестве брокера, похоже, что это связано с этой проблемой celery . Похоже, что разработчики, использующие SQS, могут столкнуться с аналогичной проблемой.