在 Django 中重试任务的最佳位置:请求或芹菜任务

Best place to retry a task in Django: requests or celery task

我正在 celery 任务中使用 Django 中的 requests 库点击 API。非常具体地说,它从 database 获取一些记录,准备 json 并执行 POST 请求。在某些情况下,调用失败并显示 500 错误代码。我想再次重试 POST 请求。最好的方法是什么?为什么?

每个 Celery 作业都在单独的进程中运行。在您的情况下,重复 500 返回的 POST 请求与创建另一个进程无关。一个过程将并且应该足以处理此类请求。因此,您需要在同一个 Celery 作业中使用 urllib.util.retry 重试请求,然后终止该作业,直到您收到代码为 200 的响应。