我有一个芹菜任务,它循环通过一个接收器列表来发送消息。如果任何发送调用失败,我不希望celery任务退出,而是继续循环中的其他项。
在我的情况下,task.retry(throw = False)不会发生这种情况。我确实看到任务在那时退出而没有做任何事,甚至没有进一步迭代循环。
我不想要和弦或链,它不是并行任务执行。我怎么能做到这一点?
@celery_app.task()
def send_msg_to_list():
for recvr in Emailrecvr.objects.filter(query=obj):
try:
email_rv = recvr.send(msg)
except SMTPException:
# Dont exit the loop but continue with others
send_msg_to_list.retry(throw=False)
# do some blah here
答案 0 :(得分:1)
celery_app.task()
def send_msg_to_list():
for recvr in Emailrecvr.objects.filter(query=obj):
try:
email_rv = recvr.send(msg)
except SMTPException:
# Dont exit the loop but continue with others
pass