python zeromq poll

Hyunchul·2021년 8월 27일
0

아래와 같이 구현하면, 메시지가 온 경우에만 메시지를 처리하도록 구현할 수 있다. 나는 "q"라는 메시지를 받으면 main loop이 종료되도록 구현했다. socket.close()가 필수적인지는 모르겠다.

import time 
import zmq 

context = zmq.Context() 
socket = context.socket(zmq.SUB) 
socket.connect("tcp://localhost:5555") 
t0 = time.time()
socket.subscribe("")

poller = zmq.Poller()
poller.register(socket, zmq.POLLIN)
t_prev = time.time()

while True: # Wait for next request from client 
    t = time.time()
    socks = dict(poller.poll(0.1))
    if socket in socks:
        msg = socket.recv().decode()
        print(msg)
        if msg == 'q':
            break

    t_prev = t
socket.close()

0개의 댓글