J'essaie d'effectuer des tâches transactionnelles en vertu desquelles la tâche annulera les mises à jour de la base de données si elle ne parvient pas à envoyer l'e-mail.django djcelery: la construction d'une tâche transactionnelle ne se résorbe pas
Ci-dessous est mon code, n'importe qui peut conseiller ce qui ne va pas ici?
from celery.task import task
from django.core.mail import send_mail, send_mass_mail
from django.db import transaction
@task(name='communicator.process_emails')
@transaction.commit_manually
def process_emails():
from models import Comm_Queue
try:
message = []
for i in Comm_Queue.objects.filter(status='P').order_by('sender_email'):
message.append((i.subject, i.content, i.sender_email, [i.recipient_email]))
Comm_Queue.objects.filter(id=i.id).update(status='S')
if send_mass_mail(message):
transaction.commit()
except Exception, e:
print 'rolled back (exception): %s' % e.__str__()
transaction.rollback()
Qu'est-ce qui se passe, et ce que vous attendez? Des informations sur le moteur de base de données que vous utilisez seraient également utiles. – SteveMc
Je m'attends à ce que la transaction soit annulée lorsqu'elle tombe dans l'exception. Mais ce n'est pas comme pour le moteur de base de données que j'utilise MySQL –