0
正在嘗試執行事務性任務,由此如果任務未能發送電子郵件,任務將回滾數據庫更新。django djcelery:構建事務性任務不會回滾
下面是我的代碼,任何人都可以在這裏建議做錯了什麼?
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()
發生了什麼事,和你有什麼期待?有關您正在使用的數據庫引擎的信息也會有所幫助。上午 – SteveMc
上午期望交易在異常情況下回滾。但它不像數據庫引擎使用它的MySQL –