Python实现ZeroMQ请求-应答模式

1 篇文章 0 订阅

ZeroMQ 看起来像是一套嵌入式的网络链接库,但工作起来更像是一个并发式的框架.它提供的套接字可以在多种协议中传输消息,如线程间\进程间\TCP\广播等.

    你可以使用套接字构建多对多的连接模式,如<1>扇出\<2>发布-订阅\<3>任务分发\<4>请求-应答等.ZeroMQ 的快速足以胜任集群应用产品.它的异步I/O机制让你能够构建多核应用程序,完成异步消息处理任务.

我们从简单的代码开始,一段传统的 Hello World 程序.我们会创建一个客户端和一个服务端,客户端发送 Hello 给服务端,服务端返回 World.下文是 Python 语言编写的服务端,它在 5555 端口打开一个 ZeroMQ 套接字,等待请求,收到后应答 World.)

# 
#   Hello World server in Python 
#   Binds REP socket to tcp://*:5555 
#   Expects "Hello" from client, replies with "World" 
# 
import zmq import time 
  
context = zmq.Context() 
socket = context.socket(zmq.REP) 
socket.bind("tcp://*:5555") 
 while True: 
    #  Wait for next request from client     message = socket.recv() 
    print "Received request: ", message 
  
    #  Do some 'work'     time.sleep (1)        #   Do some 'work' 
    #  Send reply back to client     socket.send("World")


客户端代码:

# 
#   Hello World client in Python 
#   Connects REQ socket to tcp://localhost:5555 
#   Sends "Hello" to server, expects "World" back 
# 
import zmq 
  
context = zmq.Context() 
 #  Socket to talk to server 
print "Connecting to hello world server…"
socket = context.socket(zmq.REQ) 
socket.connect ("tcp://localhost:5555") 
 #  Do 10 requests, waiting each time for a response 
for request in range (10): 
    print "Sending request ", request,"…"
    socket.send ("Hello") 
  
    #  Get the reply.     message = socket.recv() 
    print "Received reply ", request, "[", message, "]"


解释几个常用函数,详细应该看AAuto标准库.

context = zmq.Context() #创建上下文

socket = context.socket(zmq.REQ) #创建套接字,不同的后缀指定不同的模式

message = socket.recv()

#接收并返回一个字符串,这个函数内部实际上是创建了一个默认的消息对象然后调用 responder.recvMsg()

socket.send("World") #发送字符串或 raw.malloc() 分配的缓冲区对象 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值