我正在为一个Shopify应用程序编写一个webhook处理器。该应用程序安装了许多生成webhook的商店。我还有一个微服务,它使用这些webhook并将它们作为芹菜任务进行处理。但问题是由于Shopify API的限制,我不能同时为一个商店运行传入的webhook。我正试图得到这样的流程:
- 得到了webhook
- 检查是否有工人已经在为该商店处理webhook
- a。如果是,请将任务与商店名称一起放入队列中,并使其等待上一个任务结束
- b。如果没有,请使用商店名称创建一个新队列,并在任何可用的工作人员上开始执行任务
- 完成队列中的所有任务后-将其删除
也许这不是最好的解决方案,你可以给我一个更好的解决方案。基本思想是一个接一个地运行具有相同商店名称(或标签(的任务,并防止其他工作人员从队列中获取任务。但是它应该同时为不同的商店(标签(运行任务。
谢谢,活力。
我相信您可以通过为每个商店提供分布式锁来解决这个问题。点击此处了解更多信息:https://docs.celeryproject.org/en/stable/tutorials/task-cookbook.html#ensuring-一次只执行一个任务的