我需要找到如何在任何中间子任务抛出异常后继续执行immutable=True子任务链的方式。
我已经读了这个帖子和这个问题的评论。现在这些错误是固定的,但我需要实现相反的行为。我不需要停止链式执行。可能有另一种的方式来执行独立任务的列表一个接一个在任何顺序,而不发送他们之间的结果?我需要异步执行它们,因为在这种情况下django-芹菜会存储每个任务的统计信息。
一个解决方案是覆盖所有子任务的主体:
try:
...
except Exception, e:
logger.error('Exception raised: %s' % e)
raise e
但是在这种情况下,所有子任务都将以SUCCESS状态执行,并且在django-芹菜管理界面中跟踪异常将是无用的。
可能使用一个Chord和CELERY_CHORD_PROPAGATES
因此,当Chord的一个子部分失败时,您可以管理Exception并对它做您想做的事情(记录某些内容,为alter执行请求任务等)。
由于您已经有了一个链,所以Chord将只是其中的一部分,您需要知道的任务状态