2022年 11月 3日

python使用zmq

Parallel Pipeline模式:

由三部分组成,push进行数据推送,work进行数据缓存,pull进行数据竞争获取处理。区别于Publish-Subscribe存在一个数据缓存和处理负载。

当连接被断开,数据不会丢失,重连后数据继续发送到对端

client

  1. # -*- coding: utf-8 -*-
  2. import sys
  3. import zmq
  4. context = zmq.Context()
  5. socket = context.socket(zmq.PUSH)
  6. socket.bind('tcp://*:5557')
  7. while True:
  8. data = input("input your data:")
  9. if data == 'q':
  10. sys.exit()
  11. print(data)
  12. socket.send(data.encode('utf-8'))

work

  1. # -*-coding:utf-8 -*-
  2. import zmq
  3. context = zmq.Context()
  4. recive = context.socket(zmq.PULL)
  5. recive.connect('tcp://127.0.0.1:5557')
  6. sender = context.socket(zmq.PUSH)
  7. sender.bind('tcp://127.0.0.1:5558')
  8. while True:
  9. data = recive.recv()
  10. print(data)
  11. sender.send(data)

server

  1. # -*- coding: utf-8 -*-
  2. import zmq
  3. context = zmq.Context()
  4. recive = context.socket(zmq.PULL)
  5. recive.connect('tcp://127.0.0.1:5558')
  6. while True:
  7. data = recive.recv()
  8. print(data)