Currenty我有一个Ec2实例用于输入API请求
问题是API和芹菜工作者的代码库是相同的。因为e,g
我使用cutsomer.process_order(order_id)
然后工人完成剩下的工作。
有没有办法将API与工作代码分开。我想在单独的代码库中创建API,在单独的代码库中创建工作者
答案 0 :(得分:6)
您的API代码可以在没有任务源代码的情况下调用任何Celery任务。 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和工作人员都连接到同一个消息代理,并且您的工作人员实际上已经签名中指定了该任务。