Introduced MaxRetries and MaxRetriesExceededError handling code
This commit is contained in:
parent
e7864f5d85
commit
58bb754814
1 changed files with 18 additions and 17 deletions
|
@ -10,6 +10,7 @@ from datetime import datetime
|
||||||
from membership.models import StripeCustomer
|
from membership.models import StripeCustomer
|
||||||
from django.core.mail import EmailMessage
|
from django.core.mail import EmailMessage
|
||||||
from utils.models import BillingAddress
|
from utils.models import BillingAddress
|
||||||
|
from celery.exceptions import MaxRetriesExceededError
|
||||||
|
|
||||||
logger = get_task_logger(__name__)
|
logger = get_task_logger(__name__)
|
||||||
|
|
||||||
|
@ -37,24 +38,10 @@ def retry_task(task, exception=None):
|
||||||
if exception:
|
if exception:
|
||||||
kwargs['exc'] = exception
|
kwargs['exc'] = exception
|
||||||
|
|
||||||
if task.request.retries > settings.CELERY_MAX_RETRIES:
|
raise task.retry(**kwargs)
|
||||||
msg_text = 'Finished {} retries for create_vm_task'.format(task.request.retries)
|
|
||||||
logger.log(msg_text)
|
|
||||||
# Try sending email and stop
|
|
||||||
email_data = {
|
|
||||||
'subject': '{} CELERY TASK ERROR: {}'.format(settings.DCL_TEXT, msg_text),
|
|
||||||
'from_email': settings.DCL_SUPPORT_FROM_ADDRESS,
|
|
||||||
'to': ['info@ungleich.ch'],
|
|
||||||
'body': "\n".join(["%s=%s" % (k, v) for (k, v) in kwargs.items()]),
|
|
||||||
}
|
|
||||||
email = EmailMessage(**email_data)
|
|
||||||
email.send()
|
|
||||||
return
|
|
||||||
else:
|
|
||||||
raise task.retry(**kwargs)
|
|
||||||
|
|
||||||
|
|
||||||
@app.task(bind=True)
|
@app.task(bind=True, max_retries=settings.CELERY_MAX_RETRIES)
|
||||||
def create_vm_task(self, vm_template_id, user, specs, template, stripe_customer_id, billing_address_data,
|
def create_vm_task(self, vm_template_id, user, specs, template, stripe_customer_id, billing_address_data,
|
||||||
billing_address_id,
|
billing_address_id,
|
||||||
charge):
|
charge):
|
||||||
|
@ -134,7 +121,21 @@ def create_vm_task(self, vm_template_id, user, specs, template, stripe_customer_
|
||||||
email.send()
|
email.send()
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(str(e))
|
logger.error(str(e))
|
||||||
retry_task(self)
|
try:
|
||||||
|
retry_task(self)
|
||||||
|
except MaxRetriesExceededError:
|
||||||
|
msg_text = 'Finished {} retries for create_vm_task'.format(self.request.retries)
|
||||||
|
logger.error(msg_text)
|
||||||
|
# Try sending email and stop
|
||||||
|
email_data = {
|
||||||
|
'subject': '{} CELERY TASK ERROR: {}'.format(settings.DCL_TEXT, msg_text),
|
||||||
|
'from_email': settings.DCL_SUPPORT_FROM_ADDRESS,
|
||||||
|
'to': ['info@ungleich.ch'],
|
||||||
|
'body':',\n'.join(str(i) for i in self.request.args)
|
||||||
|
}
|
||||||
|
email = EmailMessage(**email_data)
|
||||||
|
email.send()
|
||||||
|
return
|
||||||
|
|
||||||
return vm_id
|
return vm_id
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue