Python 当芹菜块中的任务失败时继续

Python 当芹菜块中的任务失败时继续,python,django,celery,django-celery,Python,Django,Celery,Django Celery,我需要从远程服务器获取数百万个ID。我不想一次创建数百万个任务,因为每次抓取都会创建多个其他任务,它可能会很快淹没我们的队列(我无法创建新队列) 我发现我可以用芹菜块。这将创建适量的并行任务 FetchIdTask().chunks(milions_of_ids, 50000).apply_async() 我现在面临的问题是获取不可靠,有时返回404。当这种情况发生时,整个区块将失败,剩余的任务将无法执行 当一个区块中的一个任务失败时,是否有可能以某种方式继续执行?当然,简单的答案是在404上

我需要从远程服务器获取数百万个ID。我不想一次创建数百万个任务,因为每次抓取都会创建多个其他任务,它可能会很快淹没我们的队列(我无法创建新队列)

我发现我可以用芹菜块。这将创建适量的并行任务

FetchIdTask().chunks(milions_of_ids, 50000).apply_async()
我现在面临的问题是获取不可靠,有时返回404。当这种情况发生时,整个区块将失败,剩余的任务将无法执行


当一个区块中的一个任务失败时,是否有可能以某种方式继续执行?

当然,简单的答案是在404上不失败。有任何不可能的原因吗?因为当从其他地方正常调用任务时,任务应该失败-让我们在日志中看到它。当然,我可以创建一个包装器任务或接受大量ID的任务,但是我认为可能有一些优雅的解决方案,不需要创建另一个任务或更改旧代码。优雅的解决方案是将代码包装在异常处理程序中,该异常处理程序将相同的错误信息记录到日志中,并将失败ID添加到失败列表中,一旦处理完区块中的所有ID,该失败列表将作为新任务插入答案当然是,不要在404上失败。有任何不可能的原因吗?因为当从其他地方正常调用任务时,任务应该失败-让我们在日志中看到它。当然,我可以创建一个包装器任务或接受大量ID的任务,但是我认为可能有一些优雅的解决方案,不需要创建另一个任务或更改旧代码。优雅的解决方案是将代码包装在异常处理程序中,该异常处理程序将相同的错误信息记录到日志中,并将失败的ID添加到失败列表中,一旦处理完区块中的所有ID,该失败列表将作为新任务插入。