From 8fcade20acfead14ffda6d28d3ca35d4d71811f9 Mon Sep 17 00:00:00 2001
From: Dominik George <dominik.george@teckids.org>
Date: Sat, 8 Jan 2022 22:26:03 +0100
Subject: [PATCH] Delay registration of on_commit hook until first action

---
 celery_haystack/signals.py | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/celery_haystack/signals.py b/celery_haystack/signals.py
index afb6ec6..1c7974f 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)
-- 
GitLab