如何在API和workers中使用具有不同代码基的celery

2024-09-30 03:22:35 发布

您现在位置:Python中文网/ 问答频道 /正文

目前我有一个Ec2实例来处理API请求

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

问题是API和celery工人的代码基是相同的。因为e,g

我使用cutsomer.process_order(order_id)

剩下的就由工人来做。在

我有没有办法把API和工作代码分开。我想在单独的代码库中创建API,在单独的代码库中创建工人


Tags: 实例代码用户订单redisapi队列order
1条回答
网友
1楼 · 发布于 2024-09-30 03:22:35

API代码可以调用任何Celery任务,而无需任务源代码。芹菜有一种叫做signatures的特性:

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和worker都连接到同一个messagebroker,并且您的worker实际上拥有签名中指定的任务。在

相关问题 更多 >

    热门问题