From 23dcdf1fd1d6738e2afc633427f24a460fc31964 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Thu, 20 Jul 2023 11:41:37 +0200 Subject: [PATCH] Export tasks: Request new database connection after completing output --- src/pretix/base/services/export.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/pretix/base/services/export.py b/src/pretix/base/services/export.py index 9270698ef..a32c2db3e 100644 --- a/src/pretix/base/services/export.py +++ b/src/pretix/base/services/export.py @@ -26,7 +26,7 @@ from typing import Any, Dict, Union from celery.exceptions import MaxRetriesExceededError from django.conf import settings from django.core.files.base import ContentFile -from django.db import connection, transaction +from django.db import close_old_connections, connection, transaction from django.dispatch import receiver from django.utils.timezone import now, override from django.utils.translation import gettext @@ -86,6 +86,9 @@ def export(self, event: Event, fileid: str, provider: str, form_data: Dict[str, gettext('Your export did not contain any data.') ) file.filename, file.type, data = d + + close_old_connections() # This task can run very long, we might need a new DB connection + f = ContentFile(data) file.file.save(cachedfile_name(file, file.filename), f) return str(file.pk) @@ -154,6 +157,9 @@ def multiexport(self, organizer: Organizer, user: User, device: int, token: int, gettext('Your export did not contain any data.') ) file.filename, file.type, data = d + + close_old_connections() # This task can run very long, we might need a new DB connection + f = ContentFile(data) file.file.save(cachedfile_name(file, file.filename), f) return str(file.pk) @@ -214,6 +220,9 @@ def _run_scheduled_export(schedule, context: Union[Event, Organizer], exporter, raise ExportError( gettext('Your exported data exceeded the size limit for scheduled exports.') ) + + close_old_connections() # This task can run very long, we might need a new DB connection + f = ContentFile(data) file.file.save(cachedfile_name(file, file.filename), f) except ExportEmptyError as e: