【发布时间】:2017-10-19 21:24:24
【问题描述】:
我想在这里了解 celery 和 AMQP 的工作原理。
我的场景
我在我的机器上安装了 celery
pip 安装芹菜
我使用
制作任务from celery import Celery
app = Celery('tasks', backend='amqp', broker='amqp://')
@app.task
def print_hello():
print 'hello there'
据我了解,celery 将此任务转换为消息并通过 AMQP 协议发送到代理(redis 或 rabbitmq)。然后将这些消息排队并传递到工作节点以处理消息。
我的问题是,
- 假设我在 Java 环境中创建任务,如果消息发送到外部工作节点,是否意味着工作节点服务器必须安装 Java 才能执行任务?
- 如果消息被外部工作节点选中,工作节点和代理如何找到对方?在上面的代码中,我只有代理地址来存储任务。
另外,为什么我们将任务存储在代理中?为什么我们不能在 celery 中实现交换算法并将消息直接发送给工人?
SOAP 和 AMQP 有什么区别?
【问题讨论】:
标签: python redis rabbitmq celery