6

我需要找到在任何中间子任务引发异常后如何继续使用immutable=True子任务执行链的方式。

我已经阅读了这个线程和这个问题评论。现在这些错误已修复,但我需要实现相反的行为。我不需要停止我的链执行。是否有另一种方法可以以任何顺序依次执行独立任务列表而不在它们之间发送结果?而且我需要异步执行它们,因为在这种情况下 django-celery 将存储有关每个任务的统计信息。

一种解决方案是使用以下内容覆盖所有子任务的主体:

try:
    ...
except Exception, e:
    logger.error('Exception raised: %s' % e)
    raise e

但在这种情况下,所有子任务都将以SUCCESS状态执行,并且django-celery管理界面中的异常回溯将毫无用处。

4

1 回答 1

0

Perharps 使用 Chord 和CELERY_CHORD_PROPAGATES

因此,当 Chord 的子部分失败时,您可以管理异常并使用它做您想做的事情(记录某些内容,重新排列任务以进行更改执行等)。

因为你已经有了一个链,Chord 只是它的一部分,你需要知道状态的任务。

于 2013-03-20T07:45:47.343 回答