![](/img/trans.png)
[英]Django Celery: Model object does not exists within the celery's task (ATOMIC_REQUESTS=False)
[英]Django model does not update in celery task
我試圖做一個芹菜任務,更新Django模型並發送電子郵件。 電子郵件已正確發送,但模型未保存到數據庫。 任何想法為什么會發生? 這是我的示例任務:
@app.task()
def send_invitation(company_id):
users = User.objects.filter(company_id=company_id, user_email__invitation_sent=False)
for user in users:
user.user_email.invitation_sent = True
user.save()
send_email(user)
我曾嘗試例如幾個省電選項user.user_email.save()
但是當任務完成后,郵件被發送,但invitation_sent
停留False
,我想不通為什么會這樣
問題是您要在用戶模型上調用save()
在此更改中似乎是UserEmail(或類似形式)的模型。
要正確解決此問題,請跟蹤要保存的模型,因此在您的示例中:
...
user.user_mail.invitation_sent = True
# call save on user_email instance
user.user_mail.save() # <---- here
盡管從您的示例中可以看出,您絕對應該跟蹤處理電子郵件的操作順序。 因此,發送電子郵件,如果成功,則將其標記為電子郵件,不要說在做之前先做過什么。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.