我想在这里了解 celery 和 AMQP 的工作原理。
我的场景
我在我的机器上安装了celery
pip install celery
我用做任务
from celery import Celery
app = Celery('tasks', backend='amqp', broker='amqp://')
@app.task
def print_hello():
print 'hello there'
据我了解,celery 将此任务转换为消息并通过 AMQP 协议(protocol)发送给代理(redis 或 rabbitmq)。然后将这些消息排队并传递给工作节点以处理消息。
我的问题是,
- 假设我在 Java 环境中创建任务,如果消息被发送到外部工作节点,是否意味着工作节点服务器必须安装 Java 才能执行任务?
- 如果消息被外部工作节点拾取,工作节点和代理如何找到对方?在上面的代码中,我只有代理地址来存储任务。
另外,为什么我们要将任务存储在代理中?为什么我们不能在 celery 中实现交换算法并将消息直接发送给 worker ?
SOAP 和 AMQP 有什么区别?
最佳答案
工作人员不仅需要 Python,还需要您要在其上运行的任务的所有代码。
但是您没有专门针对节点,这正是存在代理的原因。您将任务放在队列中,然后工作人员将它们接走。
我不知道您为什么要在这种情况下提到 SOAP。它与任何事情都没有任何关系。
关于python - 了解 celery 工作节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44075266/