Recently, I noticed the strange behavior of Celery (3.1.25). The task is queued for execution using send_task() only once, however after a while I see that several launches of the same task! I spent hours looking at the celery documentation, trying to figure out how to prevent this behavior. Any help would be greatly appreciated!
Here is from inspect active :
... -> celery1@ec2-256-234-55-209.compute-1.amazonaws.com : OK * {'hostname': ' celery1@ec2-256-234-55-209.compute-1.amazonaws.com ', 'id': '5bf971b7-c2d2-47a1-9e3e-abec6c3c7ab4', 'args': "['myex', 'equities', 20170103]", 'time_start': 1633747.663716712, 'name': 'parsing.2pass', 'acknowledged': False, 'delivery_info': {'exchange': 'celery', 'priority': 0, 'redelivered': None, 'routing_key': 'celery'}, 'worker_pid': 28649, 'kwargs': '{}'} * {'hostname': ' celery1@ec2-256-234-55-209.compute-1.amazonaws.com ', 'id': '5bf971b7-c2d2-47a1-9e3e-abec6c3c7ab4', 'args': "['myex', 'equities', 20170103]", 'time_start': 1637348.143546186, 'name': 'parsing.2pass', 'acknowledged': False, 'delivery_info': {'exchange': 'celery', 'priority': 0, 'redelivered': None, 'routing_key': 'celery'}, 'worker_pid': 1550, 'kwargs': '{}'} -> celery1@ec2-54-234-55-254.compute-1.amazonaws.com : OK * {'hostname': ' celery1@ec2-256-234-55-254.compute-1.amazonaws.com ', 'id': '5bf971b7-c2d2-47a1-9e3e-abec6c3c7ab4', 'args': "['myex', 'equities', 20170103]", 'time_start': 1626395.204211438, 'name': 'parsing.2pass', 'acknowledged': False, 'delivery_info': {'exchange': 'celery', 'priority': 0, 'redelivered': None, 'routing_key': 'celery'}, 'worker_pid': 26978, 'kwargs': '{}'} -> celery1@ec2-54-226-20-88.compute-1.amazonaws.com : OK * {'hostname': ' celery1@ec2-256-226-20-88.compute-1.amazonaws.com ', 'id': '5bf971b7-c2d2-47a1-9e3e-abec6c3c7ab4', 'args': "['myex', 'equities', 20170103]", 'time_start': 1630146.08942695, 'name': 'parsing.2pass', 'acknowledged': False, 'delivery_info': {'exchange': 'celery', 'priority': 0, 'redelivered': None, 'routing_key': 'celery'}, 'worker_pid': 19473, 'kwargs': '{}'} ...
Note that task 5bf971b7-c2d2-47a1-9e3e-abec6c3c7ab4 works for at least 3 workers, even if it was called by a single send_task () call. We use Redis as a broker with all the default values (no interesting exchanges and routes).