所以......当我收到 API 调用时,我会执行以下操作:
i = CertainObject(paramA=1, paramB=2)
i.save()
现在我的作者数据库有一条新记录。
处理可能需要一些时间,我不希望拖延API调用者的响应,因此接下来的代码行,我使用Celery将对象ID传递给异步任务:
run_async_job.delay(i.id)
根据队列,立即执行或几秒钟后执行run_async_job
尝试从数据库中加载提供的ID的记录。这是一种赌博。有时它能起作用,有时不行,这取决于读副本是否进行了更新。
是否有模式可以保证成功而无需在读取之前“休眠”几秒钟或者希望好运呢?
谢谢。
self.retry
会将此任务返回到队列中,以便尝试其他任务吗?还是会占用工作人员的“插槽”,直到成功或超过20次尝试? - JasonGenX