Use transaction aware task for regenerate_css

This commit is contained in:
Raphael Michel
2019-09-19 18:17:43 +02:00
parent 73d5a2cec0
commit a39822aedc
2 changed files with 17 additions and 3 deletions

View File

@@ -106,3 +106,15 @@ class TransactionAwareTask(ProfiledTask):
transaction.on_commit(
lambda: super(TransactionAwareTask, self).apply_async(*args, **kwargs)
)
class TransactionAwareProfiledEventTask(ProfiledEventTask):
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(TransactionAwareProfiledEventTask, self).apply_async(*args, **kwargs)
)

View File

@@ -14,7 +14,9 @@ from django.templatetags.static import static as _static
from django_scopes import scope
from pretix.base.models import Event, Event_SettingsStore, Organizer
from pretix.base.services.tasks import ProfiledEventTask, ProfiledTask
from pretix.base.services.tasks import (
TransactionAwareProfiledEventTask, TransactionAwareTask,
)
from pretix.celery_app import app
from pretix.multidomain.urlreverse import get_domain
from pretix.presale.signals import sass_postamble, sass_preamble
@@ -79,7 +81,7 @@ def compile_scss(object, file="main.scss", fonts=True):
return css, checksum
@app.task(base=ProfiledEventTask)
@app.task(base=TransactionAwareProfiledEventTask)
def regenerate_css(event):
# main.scss
css, checksum = compile_scss(event)
@@ -100,7 +102,7 @@ def regenerate_css(event):
event.settings.set('presale_widget_css_checksum', checksum)
@app.task(base=ProfiledTask)
@app.task(base=TransactionAwareTask)
def regenerate_organizer_css(organizer_id: int):
organizer = Organizer.objects.get(pk=organizer_id)