Fix issue with Celery control signals not being received after the 2nd time.
There are two issues with kombu/common.py that need to be fixed with this PR. First, the code attempts to avoid declaring exchanges more than once. The problem is that Celery control signals leverage the auto_delete flag, which will delete exchanges when there are no more messages. The other issue appears that the exchanges are not being bound to any channels.
-
Avoid trying to cache entities that have auto_delete=True (i.e. Celery control signals) -- reverts back to original behavior in v3.0.18.
-
Bind the entity if it currently is not bound.
Build failures seem unrelated.
We need to be able to cache durable queue declarations, otherwise transient messaging will be dead slow, why did you re-enable durable if it was auto_delete you wanted?
I simply reverted the change from the last release. I can change to only disable onauto delete.
Updated.
Thanks! Merged into master and 3.0. Are you sure it still works even if caches transients?
I do not. I was only focused on fixing the issue with the Celery control signals.
Apparently the problem didn't go away since I only put it on the exchange and not the queue: https://github.com/celery/kombu/pull/374
@rogerhu if you are still active, and if this issue is still present, could you rebase?