记录:异步网络框架:twisted
学习参考:www.cnblogs.com/alex3714/articles/5248247.html
RabbitMQ 模块 《消息队列》
先说明:python的队列
1:线程 queue 只在同一进程内的线程间交互数据
2:进程 queue 只在同一父进程及子进程间交互数据
只应用于python,无法和其他语言程序通信
消息队列有如下几种:(Rabbitmq,ZeroMq,ActiveMq)
功能:可以实现,不同程序间的数据交互
安装:
1:下载安装erlang,因为rabbitmq是erlang开发的
yum install ncurses-devel gcc 安装关联包,如果安装了就跳过
解压 otp_src 包:configure;make &
2:下载rabbitmq并进行安装
2:pycharm安装pika 模块
消息分发轮询:当同时出现多个消费者进入监听模式时,生产者发送的消息会轮询的被多个消费者接收到。
消息持久化:当mq服务器关闭服务然后重启后,发现消息队列清空了,是因为消息存储在内存中,保持消息持久化需要对生产者和消费者声明队列持久化参数,并对生产者的消息进行持久化
参数如:
durable=True:进行队列持久化
delivery_mode=2: 进行生产者的消息持久化
举例代码如:
生产者
1 # rabbitmq 发送端 2 import pika 3 # 连接 mq服务器 4 connection = pika.BlockingConnection(pika.ConnectionParameters('localhost')) 5 # 声明一个管道 6 channel = connection.channel() 7 # 在管道中声明一个队列 8 channel.queue_declare(queue='hello1',durable=True) # durable 进行队列持久化 9 # 在指定队列中发送一条消息 生产者 10 channel.basic_publish(exchange='', 11 routing_key='hello1', # 消息队列名 12 body='Hello World', # 消息内容 13 properties = pika.BasicProperties( 14 delivery_mode=2, # 进行队列的消息持久化 15 )) 16 # 发送完毕 关闭连接 17 print('xx send "Hello World"') 18 connection.close()