diff --git a/celery_haystack/signals.py b/celery_haystack/signals.py index afb6ec64e537f833d9bd52d7a653ff254db035c5..1c7974f55bae473144e4a8343072a6019237f383 100644 --- a/celery_haystack/signals.py +++ b/celery_haystack/signals.py @@ -14,10 +14,7 @@ class CelerySignalProcessor(RealtimeSignalProcessor): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self._queue = [] - - def setup(self): - transaction.on_commit(self.run_task) - super().setup() + self._on_commit_registered = False def handle_save(self, sender, instance, **kwargs): return self.enqueue('update', instance, sender, **kwargs) @@ -55,3 +52,6 @@ class CelerySignalProcessor(RealtimeSignalProcessor): if action == 'update' and not index.should_update(instance): continue self._queue.append((action, get_identifier(instance))) + + if not self._on_commit_registered: + transaction.on_commit(self.run_task)