У меня есть работник Celery, настроенный для подключения к Redis следующим образом:
celery_app_site24x7 = Celery('monitoringExterne.celerys.site24x7',
broker=settings.REDIS['broker'], backend=settings.REDIS['backend'])
celery_app_site24x7.conf.broker_transport_options = {
'visibility_timeout': 36000
}
celery_app_site24x7.conf.socket_timeout = 300
celery_app_site24x7.conf.broker_connection_max_retries = None
celery_app_site24x7.config_from_object('django.conf:settings')
celery_app_site24x7.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
Проблема заключается в том, что если Redis не работает и соединение восстанавливается, новые задачи, добавленные в очередь, не выполняются:
[2020-01-13 10:10:14,517: ERROR/MainProcess] consumer: Cannot connect to redis://xxx.xxx.xxx.xx:6380/10: Error while reading from socket: ('Connection closed by server.',).
Trying again in 2.00 seconds...
[2020-01-13 10:10:16,590: INFO/MainProcess] Connected to redis://xxx.xxx.xxx.xx:6380/10
[2020-01-13 10:10:16,699: INFO/MainProcess] mingle: searching for neighbors
[2020-01-13 10:10:17,766: INFO/MainProcess] mingle: all alone
Я вручную вызвал задачу сельдерея через оболочку django следующим образом:
celery_tasks.site24x7.test.delay ()
Он возвращает мне идентификатор задачи Asyn c, но работник не выполняет эту задачу.
<AsyncResult:ff634b85-edb5-44d4-bdb1-17a220761fcc>
Если я продолжу запускать задачу с задержкой, очередь будет увеличиваться:
127.0.0.1:6379[10]> llen site24x7
(integer) 4
127.0.0.1:6379[10]> llen site24x7
(integer) 5
Ниже выводятся данные о статусе сельдерея и проверяются
$ celery -A мониторингExterne --app = мониторингExterne.celerys.site24x7
статус Ошибка: ни один узел не отвечает в течение определенного времени.
$ celery -A monitorExterne --app = мониторингExterne.celerys.site24x7 проверять активный
Ошибка: ни один узел не ответил в течение ограничения времени.