diff --git a/aleksis/core/celery.py b/aleksis/core/celery.py
index 27a67c539babfc61701cc9521b42187ebebc5787..b9f0518fe7592e39b14fef4e6eab676690747098 100644
--- a/aleksis/core/celery.py
+++ b/aleksis/core/celery.py
@@ -1,5 +1,7 @@
 import os
 
+from django.db import transaction
+
 from celery import Celery
 
 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "aleksis.core.settings")
@@ -7,3 +9,14 @@ os.environ.setdefault("DJANGO_SETTINGS_MODULE", "aleksis.core.settings")
 app = Celery("aleksis")  # noqa
 app.config_from_object("django.conf:settings", namespace="CELERY")
 app.autodiscover_tasks()
+
+
+class OnCommitTask(app.Task):
+    """Task that is delayed at least until the current transaction commits."""
+    def delay(self, *args, **kwargs):
+        def _real_delay():
+            return super().delay(*args, **kwargs)
+        transaction.on_commit(_real_delay)
+
+
+app.Task = OnCommitTask