区分芹菜,海带,PyAMQP和RabbitMQ的/ ironMQ(Differentiate cel

2019-08-17 05:25发布

我想S3服务器,但上载我想生成3米不同大小的缩略图之前上传图片,我想它做出来的请求/响应周期的,因此我使用的芹菜。 我已阅读的文档,这里是我的理解。 如果我错了请纠正我。

  1. 芹菜可帮助您管理请求响应周期之外的任务队列。
  2. 再有就是一些所谓的胡萝卜/海带 - 它的一个Django中间件封装了获得通过芹菜创建的任务。
  3. 然后促进到代理胡萝卜的通信的第三层PyAMQP。 例如。 RabbitMQ的,AmazonSQS,ironMQ等。
  4. 经纪人坐在不同的服务器上,做的东西给你。

现在,我的理解是 - 如果多个用户同时上传图片,芹菜会排队的大小调整,并调整大小将实际发生在ironMQ服务器,因为它提供了在Heroku上一个凉爽的插件。

现在的疑惑:

  1. 但图像调整尺寸后什么,会ironMQ推到S3服务器,还是会通知一旦这个过程完成..我并不清楚这件事。

  2. 是什么芹菜,海带/胡萝卜之间的差别,你能解释一下淋漓尽致。

Answer 1:

IronMQ不处理你的任务你; 它只是作为后端的芹菜跟踪的工作需要进行什么。

所以,这里是发生了什么。 假设你有两台服务器,Web服务器和你的芹菜服务器。 您的Web服务器负责处理请求,您的芹菜服务器创建缩略图,并将它们上传到S3。 下面是一个典型的请求是这样的:

  1. 您的用户上传图像到Web服务器。
  2. 您存储图像的地方-我倒是建议把它放在S3权的话,个人,但你也可以将其存储在,例如IronCache ,base64编码。 问题的关键是把它放在你的芹菜服务器可以访问它。
  3. 你排队的作业对芹菜,通过图像的位置,你的芹菜服务器。
  4. 你的芹菜服务器下载图像,生成缩图,并将其上传到S3。 然后,它存储在作业结果的S3网址。
  5. 您的Web服务器一直等待,直到作业完成,然后访问的结果。 或者,你可以有你的芹菜服务器存储在数据库本身的结果。 问题的关键是,芹菜服务器做繁重(生成缩略图),虽然它不撑起请求循环。

我写了使用IronMQ在Heroku上的例子。 :你可以在这里看到它http://iron-celery-demo.herokuapp.com 。 你可以看到该示例的源在Github和阅读教程 ,这也解释了相当彻底,一步一步如何在Heroku上部署芹菜。

要清除了AMQP的东西:

  • IronMQ是Iron.io.开发的基于云计算的消息队列服务
  • AMQP是一个开放的通讯规范
  • 是的RabbitMQ AMQP规范的最流行的实现(据我所知)。
  • PyAMQP是一个Python库,让Python的客户AMQP的任何实现,包括RabbitMQ的沟通

一个IronMQ和RabbitMQ的/ AMQP之间最大的区别是,IronMQ托管和管理的,所以你不必自己主机的服务器而发愁的正常运行时间。 该规范提供了一堆更分化方面,并且有潜在的差异,但芹菜抽象的大多数人了。 因为你使用芹菜,你是容易注意到的唯一区别是,IronMQ托管,所以您不必站起来和管理自己的服务器。

披露 :我被Iron.io,背后的公司IronMQ使用。



Answer 2:

“其中一个IronMQ和RabbitMQ的/ AMQP之间最大的区别是,IronMQ托管和管理的,所以你不必自己主机的服务器而发愁的正常运行时间。”

目前,有至少两个托管管理的RabbitMQ作为一种服务选项:大人物和CloudAMQP。 芹菜应与正常工作。



文章来源: Differentiate celery, kombu, PyAMQP and RabbitMQ/ironMQ