Question

We're using celery eta tasks to schedule tasks FAR (like months) in the future. Now using the rabbitMQ backend because the mongo backend did loose such tasks on a worker restart.

Actually tasks with the rabbitMQ backend seem to be persistent across celery and rabbitMQ restarts, BUT revoke messages seem to be lost on rabbitMQ restarts. I guess that if revoke messages are lost, those eta tasks that should be killed will execute anyway.

Was it helpful?

Solution

This may be helpful from the documentation (Persistent Revokes):

The list of revoked tasks is in-memory so if all workers restart the list of revoked ids will also vanish. If you want to preserve this list between restarts you need to specify a file for these to be stored in by using the –statedb argument to celery worker:

$ celery -A proj worker -l info --statedb=/var/run/celery/worker.state
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top