Django Celery任务在错误/异常后继续

时间:2016-01-24 01:39:38

标签: python django django-celery celery-task

我有一个芹菜任务,它循环通过一个接收器列表来发送消息。如果任何发送调用失败,我不希望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

1 个答案:

答案 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