Ответ 1
EDIT: любой пользователь сообщения, использующий kombu *, подключенный к тому же URL-адресу Redis
поможет восстановить неустановленные сообщения, поэтому вы должны убедиться, что все они
настроены с тем же значением visibility_timeout
.
Общей ошибкой является запуск монитора Flower следующим образом:
celery flower -b redis://somewhere
вместо этого:
celery -A proj flower
поскольку первый означает, что экземпляр Flower не будет настроен
с конфигурацией сельдерея, а затем пропустить BROKER_TRANSPORT_OPTIONS
и настройку visibility_timeout
.
В дополнение к этому вы также должны убедиться, что настенные часы синхронизируются с помощью ntp, как описано в первоначальном ответе ниже.
- kombu - это библиотека обмена сообщениями, используемая Celery.
Оригинальный ответ:
Даже если я ничего не слышал об этом, это может быть ошибкой.
Я добавил несколько операторов печати в kombu/transport/redis.py
, чтобы проверить, правильно ли установлен visibility_timeout, и это определенно для меня. Тестирование того, что он работает со значениями, превышающими час, займет больше времени (точнее, примерно 2 часа), поэтому я могу сообщить об этом.
В то же время вы можете убедиться, что вы правильно устанавливаете visiblity_timeout, добавив инструкцию печати самостоятельно (например, к методу restore_visible в redis-транспорте).
Обратите внимание, что эта функция использует временные метки, поэтому, если у вас есть несколько машин, важно, чтобы часы были в значительной степени синхронизированы (особенно, не отходя от часов). Вы всегда должны использовать ntp на сетевых серверах и регулярно синхронизировать.