mirror of
https://github.com/pretix/pretix.git
synced 2026-05-11 16:13:59 +00:00
Banktransfer: Add retry in import task
This commit is contained in:
@@ -3,6 +3,7 @@ import logging
|
|||||||
import re
|
import re
|
||||||
from decimal import Decimal
|
from decimal import Decimal
|
||||||
|
|
||||||
|
from celery.exceptions import MaxRetriesExceededError
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.db import transaction
|
from django.db import transaction
|
||||||
from django.utils.translation import ugettext_noop
|
from django.utils.translation import ugettext_noop
|
||||||
@@ -10,6 +11,7 @@ from django.utils.translation import ugettext_noop
|
|||||||
from pretix.base.i18n import language
|
from pretix.base.i18n import language
|
||||||
from pretix.base.models import Event, Order, Quota
|
from pretix.base.models import Event, Order, Quota
|
||||||
from pretix.base.services.async import TransactionAwareTask
|
from pretix.base.services.async import TransactionAwareTask
|
||||||
|
from pretix.base.services.locking import LockTimeoutException
|
||||||
from pretix.base.services.mail import SendMailException
|
from pretix.base.services.mail import SendMailException
|
||||||
from pretix.base.services.orders import mark_order_paid
|
from pretix.base.services.orders import mark_order_paid
|
||||||
from pretix.celery import app
|
from pretix.celery import app
|
||||||
@@ -96,8 +98,8 @@ def _get_unknown_transactions(event: Event, job: BankImportJob, data: list):
|
|||||||
return transactions
|
return transactions
|
||||||
|
|
||||||
|
|
||||||
@app.task(base=TransactionAwareTask)
|
@app.task(base=TransactionAwareTask, bind=True, max_retries=5, default_retry_delay=1)
|
||||||
def process_banktransfers(event: int, job: int, data: list) -> None:
|
def process_banktransfers(self, event: int, job: int, data: list) -> None:
|
||||||
with language("en"): # We'll translate error messages at display time
|
with language("en"): # We'll translate error messages at display time
|
||||||
event = Event.objects.get(pk=event)
|
event = Event.objects.get(pk=event)
|
||||||
job = BankImportJob.objects.get(pk=job)
|
job = BankImportJob.objects.get(pk=job)
|
||||||
@@ -123,6 +125,13 @@ def process_banktransfers(event: int, job: int, data: list) -> None:
|
|||||||
else:
|
else:
|
||||||
trans.state = BankTransaction.STATE_NOMATCH
|
trans.state = BankTransaction.STATE_NOMATCH
|
||||||
trans.save()
|
trans.save()
|
||||||
|
except LockTimeoutException:
|
||||||
|
try:
|
||||||
|
self.retry()
|
||||||
|
except MaxRetriesExceededError:
|
||||||
|
logger.exception('Maximum number of retries exceeded for task.')
|
||||||
|
job.state = BankImportJob.STATE_ERROR
|
||||||
|
job.save()
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
job.state = BankImportJob.STATE_ERROR
|
job.state = BankImportJob.STATE_ERROR
|
||||||
job.save()
|
job.save()
|
||||||
|
|||||||
Reference in New Issue
Block a user