如何在API和worker中使用具有不同代码库的celele



Currenty我有一个Ec2实例用于处理API请求

  1. 用户订单通过芹菜任务进入redis中的队列
  2. 我有2个Ec2实例正在处理队列

问题是API和celele工作者的代码库是相同的。因为e,g

我使用cutsomer.process_order(order_id)

然后工人完成剩下的工作。

有没有什么方法可以将API从工作者代码中分离出来。我想在单独的代码库中制作API,在单独的编码库中制作工人

您的API代码可以在没有可用任务源代码的情况下调用任何Celery任务。芹菜有一个叫做签名的功能:

from celery import Celery
app = Celery(...)
process_order = app.signature('your-other-project.tasks.process_order')
result = process_order.delay(order_id)  # standard calling api works
print(result.get())

只需确保您的API和工作人员都连接到同一个消息代理,并且您的工作人员实际上在签名中有指定的任务。

相关内容

  • 没有找到相关文章

最新更新