本节内容:

  1. RabbitMQ队列
  2. Memcached
  3. Redis

 

1.  RabbitMQ

  安装 http://www.rabbitmq.com/install-standalone-mac.html

  安装python rabbitMQ module

  实现最简单的队列

  python自动华 (十一)

  send 端 
  received 端

  

1.1 Work Queues

python自动华 (十一)

  在这种模式下,RabbMQ会默认将P发的消息依次分发给各个消费者(c),跟负载均衡差不多

  消息提供者代码
  消息接收者代码

  此时,先启动消息生产者,然后再分别启动3个消费者,通过生产者多发送几条消息,你会发现,这几条消息会被依次分配到各个消费者身上。

  下面这段代码,不管是Ctrl + C手动杀掉接收端的进程还是长时间处理一个消息,都不会使消息丢失。

  
def callback(ch, method, properties, body):
    print
    " [x] Received %r" % (body,)
    time.sleep(body.count('.'))
    print
    " [x] Done"
    ch.basic_ack(delivery_tag=method.delivery_tag)
channel.basic_consume(callback,
                      queue='hello')
View Code

1.2 消息持久化 

  保证在RabbitMQ服务挂掉后,队列和消息都不会丢失就必须进行消息持久化

  •   channel.queue_declare(queue='hello', durable=True)
  
channel.basic_publish(exchange='',

    routing_key="task_queue",

    body=message,

    properties=pika.BasicProperties(

     delivery_mode = 2, # make message persistent

    ))
View Code

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案