You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
and it sent each 20-30s with default settings (60s timeout in RabbitMQ).
So after long task (>1min) Celery trying ACK task, fail with broken pipe and closed connection, restart connection, retrieve same task again and encircle to infinity loop )))
[2023-04-20 00:29:05,760: WARNING/MainProcess] consumer: Connection to broker lost. Trying to re-establish the connection...
PS. It block Basic.Ack also, so Celery's feature by default acks_late=False becomes True )))
Worker send Ack for task message only after task execution.
Especially it annoying together with long tasks, because not acked task return to queue and after connection lost worker start it again and again.
The text was updated successfully, but these errors were encountered:
Hello, @the-wondersmith !
I found some issue in your pool (and in celery-pool-asyncio it is same):
Long running tasks blocked pool (?) and Kombu don't sending AMQP heartbeats till task completed.
Regular heartbeats looks like:
and it sent each 20-30s with default settings (60s timeout in RabbitMQ).
So after long task (>1min) Celery trying ACK task, fail with
broken pipe
and closed connection, restart connection, retrieve same task again and encircle to infinity loop )))If you want reproduce it, just run
PS. It block Basic.Ack also, so Celery's feature by default
acks_late=False
becomesTrue
)))Worker send Ack for task message only after task execution.
Especially it annoying together with long tasks, because not acked task return to queue and after connection lost worker start it again and again.
The text was updated successfully, but these errors were encountered: