zoukankan      html  css  js  c++  java
  • RabbitMq与Celery应用示意图

    1、RabbitMQ  ((消息队列工具,在celery中扮演broker的角色,broker是消息代理,或者叫做消息中间件)

    2、使用Celery (异步任务的调度工具)
         

          简单来说,rabbitmq是一个采用Erlang写的强大的消息队列工具。在celery中可以扮演broker的角色。那么什么是broker?

          broker是一个消息传输的中间件,可以理解为一个邮箱。每当应用程序调用celery的异步任务的时候,会向broker传递消息,而后celery的worker将会取到消息,进行对于的程序执行。好吧,这个邮箱可以看成是一个消息队列。那么什么又是backend,通常程序发送的消息,发完就完了,可能都不知道对方时候接受了。为此,celery实现了一个backend,用于存储这些消息以及celery执行的一些消息和结果。对于 brokers,官方推荐是rabbitmq和redis,至于backend,就是数据库啦。为了简单起见,我们都用redis。

    (1)celery 的架构

    celery beat: 任务调度器,beat进程会读取配置文件的内容,周期性的将配置中到期需要执行的任务发送给任务队列。
    celery worker: 执行任务的消费者,通常会在多台服务器运行多个消费者 来提高执行效率。
    broker: 消息代理,或者叫做消息中间件,接受任务生产者发送过来的任务消息,存进队列再按序分发给任务消费方(通常是消息队列或者数据库)
    producer: 调用了celery提供的API、函数或者装饰器而产生任务并交给任务队列处理的都是任务生产者。
    result backend: 任务处理完后保存状态信息和结果,以供查询。celery默认已支持redis、 rabbitmq、 mongoDB、django ORM等方式


    (2)celery使用场景:

    web应用。当用户触发的一个操作需要较长时间才能执行完成时,可以把它作为任务交给celery去异步执行,执行完成后再返回给用户。
    定时任务。生产环境经常会有一些定时任务。
    其他可以异步执行的任务。比如发送消息/ 邮件、推送消息、清理/设置缓存等。

    万般皆下品,唯有读书高!
  • 相关阅读:
    10 道选择题,测试你是不是死忠谷粉
    JBoss Seam 3.0.0.Beta2 发布
    送给十二星座的名言警句
    Chinasb & B3log!
    GAE 博客——B3log Solo 0.2.5 正式版发布了!
    明天发布 B3log Solo 0.2.5
    JBoss Seam 3.0.0.Beta2 发布
    10 道选择题,测试你是不是死忠谷粉
    Python数据分析工具包:Pandas
    Programming Computer Vision with Python: Tools and algorithms for analyzing images
  • 原文地址:https://www.cnblogs.com/s686zhou/p/12105270.html
Copyright © 2011-2022 走看看