sqs消息删除流程如何在celery-sqs中工作

时间:2018-06-21 08:24:15

标签: django celery amazon-sqs

我一直在寻找芹菜和平方根删除的工作原理? 芹菜什么时候从sqs删除消息? 从sqs中选择邮件时或完成任务后会删除邮件吗? 如果任务中有错误或引发错误怎么办? 如果任务花费的时间过长(例如20分钟),消息(任务)是否会存在?

2 个答案:

答案 0 :(得分:1)

芹菜何时从sqs删除邮件? 完成任务后,消息将被删除。

如果任务中出现错误或引发错误怎么办? 消息仍在代理中,并在max_retries到达后删除。

如果任务(例如20分钟)过长,消息(任务)会出现吗? 这取决于可见性超时。消息将变为“不可见”状态,直到您的可见性超时,此后该消息才可供工作人员使用。 (如果可见性超时时间少于重试时间,则工作人员将消耗相同的消息多次)。

  

最佳实践是(可见性超时)>(最大重试次数*重试时间)

答案 1 :(得分:0)

(不幸的是)所选的答案对于SQS不正确,如this open issue所示。

this merged PR证明了尝试解决此问题的方法。

不过,there are bugs具有上述实现。

长话短说,无论任务中发生任何异常,消息都会100%地从SQS队列中删除。

编辑:这可能已解决,per this PR

在通过个人测试确认此功能正常运行后,我将更新此答案