首页 > 其他 > 详细

pyzmq的4种模式(REP/REQ)笔记

时间:2015-11-29 02:08:01      阅读:1629      评论:0      收藏:0      [点我收藏+]

? REP/REQ模式就是最常见的Client/Server模式,zmq有亮点,翻译下:

?

? 特点 1. 和pair模式不同的是这种模式下客户端socket可以连接多个server

? ? ? ? ? 2. 客户端请求会被交替发送到server组的server

?

? 要注意的2个地方:

? ? ? ? ? 1. 客户端的 socket zmq.REQ 发送后会被阻塞直到新消息到来

? ? ? ? ? 2. 服务端的 socket zmq.REP 会阻塞直到新请求到来?

? 然后保证:Each Request/Reply is paired and has to be successful.

??bubuko.com,布布扣

然后这样子就负载均衡了啊啊,真是幸福来的太快

代码如下,改了一点点:

client:

import zmq
import sys
import time
 
port = ‘5556‘
port,port1,client_name= sys.argv[1:]	

context = zmq.Context()
socket = context.socket(zmq.REQ)
socket.connect(‘tcp://localhost:%s‘%port)
if port1:
	socket.connect(‘tcp://localhost:%s‘%port1)

for i in range(10):
	socket.send(‘client %s send message %d‘%(client_name,i))
	msg = socket.recv()
	print msg

?server:

import zmq
import sys
import time

port = ‘5556‘
server_name = ‘‘
port,server_name = list(sys.argv[1:])

context = zmq.Context()
socket = context.socket(zmq.REP)
socket.bind(‘tcp://*:%s‘%port)
print ‘start listen:‘,port

while True:
	message = socket.recv()
	print ‘recieve request:‘,message
	time.sleep(1)
	socket.send(‘reply from server:%s port:%s‘%(server_name,port))

?run起来,

>>>python repreq-server.py 6665 server01
>>>python repreq-server.py 6666 server02
>>>python repreq-client.py 6665 6666 client01
>>>python repreq-client.py 6665 6666 client02

?发现果然是在交替调用2个server

?

然后告诫诸位:

?

....
socket.send ("Hello")
socket.send ("Hello1")
....

Error: zmq.core.error.ZMQError: Operation cannot be accomplished in current state
这样子是不行的,不能乱来
另外发现:客户端send后,如果服务器挂了,它还是照等不误,这个以后要注意着点

pyzmq的4种模式(REP/REQ)笔记

原文:http://pjwqq.iteye.com/blog/2259988

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!