【问题标题】:How does sqs message deletion flow works in celery-sqssqs消息删除流程如何在celery-sqs中工作
【发布时间】:2018-11-30 12:08:21
【问题描述】:

我在寻找 celery 和 sqs 删除的工作原理? 芹菜什么时候从sqs删除消息? 当从sqs中选择消息或完成任务后它会删除吗? 如果任务中有错误或引发错误怎么办? 如果任务花费的时间太长,比如 20 分钟,消息(任务)会在那里吗?

【问题讨论】:

    标签: django celery amazon-sqs


    【解决方案1】:

    this open issue 所示,所选答案(很遗憾)对于 SQS 不正确。

    已尝试解决此问题,this merged PR 证明了这一点。

    但是,there are bugs 使用上述实现。

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

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

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

    【讨论】:

      【解决方案2】:

      celery什么时候删除sqs的消息? 完成任务后消息将被删除。

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

      如果任务花费的时间太长,比如 20 分钟,消息(任务)会在那里吗? 这取决于可见性超时。消息进入“不可见”状态,直到您的可见性超时,之后它可供工作人员使用。 (如果可见性超时小于重试时间,worker 将多次消费相同的消息)。

      最佳实践是(可见性超时)> (max_retries * retry_time)

      【讨论】:

      • 任务完成后消息会被删除 celery 哪里提到的?我找不到从 SQS 中删除任务的文档
      猜你喜欢
      • 2019-01-02
      • 2012-04-28
      • 1970-01-01
      • 2020-03-04
      • 2013-12-31
      • 2012-08-25
      • 2021-10-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多