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