mirror of
https://github.com/pretix/pretix.git
synced 2026-05-03 14:54:04 +00:00
Make all EventTasks transaction-aware
This commit is contained in:
@@ -63,6 +63,17 @@ class ProfiledTask(app.Task):
|
|||||||
return super().on_success(retval, task_id, args, kwargs)
|
return super().on_success(retval, task_id, args, kwargs)
|
||||||
|
|
||||||
|
|
||||||
|
class TransactionAwareTaskMixin:
|
||||||
|
def apply_async(self, *args, **kwargs):
|
||||||
|
"""
|
||||||
|
Unlike the default task in celery, this task does not return an async
|
||||||
|
result
|
||||||
|
"""
|
||||||
|
transaction.on_commit(
|
||||||
|
lambda: super().apply_async(*args, **kwargs)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class EventTask(app.Task):
|
class EventTask(app.Task):
|
||||||
def __call__(self, *args, **kwargs):
|
def __call__(self, *args, **kwargs):
|
||||||
if 'event_id' in kwargs:
|
if 'event_id' in kwargs:
|
||||||
@@ -88,21 +99,9 @@ class EventTask(app.Task):
|
|||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
|
||||||
class ProfiledEventTask(ProfiledTask, EventTask):
|
class ProfiledEventTask(TransactionAwareTaskMixin, ProfiledTask, EventTask):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class TransactionAwareTask(ProfiledTask):
|
class TransactionAwareTask(TransactionAwareTaskMixin, ProfiledTask):
|
||||||
"""
|
pass
|
||||||
Task class which is aware of django db transactions and only executes tasks
|
|
||||||
after transaction has been committed
|
|
||||||
"""
|
|
||||||
|
|
||||||
def apply_async(self, *args, **kwargs):
|
|
||||||
"""
|
|
||||||
Unlike the default task in celery, this task does not return an async
|
|
||||||
result
|
|
||||||
"""
|
|
||||||
transaction.on_commit(
|
|
||||||
lambda: super(TransactionAwareTask, self).apply_async(*args, **kwargs)
|
|
||||||
)
|
|
||||||
|
|||||||
Reference in New Issue
Block a user