【发布时间】:2022-10-13 14:43:36
【问题描述】:
此代码在 cron 上运行。所以我想立即更新对象的状态,这样如果第二个 cron 在当前 cron 完成之前启动,这些对象就不会再次被拾取(这最终将在我的应用程序中开始发生。)
# Grab all pending emails.
emails = delivery_que.objects.filter(status='PENDING')
emails.update(status='SENDING')
# Loop through the pending emails.
for email in emails:
当前代码不起作用,因为在我 .update() 之后我似乎不再有权访问这些对象。
这是我实施的解决方法:
# Grab all pending emails.
emails = delivery_que.objects.filter(status='PENDING')
emails.update(status='SENDING')
emails = delivery_que.objects.filter(status='SENDING')
# Loop through the pending emails.
for email in emails:
我还缺少另一个更好的解决方案吗?我不想再次查询数据库来重新选择我应该已经可以从第一个查询中访问的对象。
【问题讨论】:
-
在下面的循环中,您是否将状态更改为“已发送”并再次保存每个状态?