Как правильно закрыть сокет ZMQ?Python

Программы на Python
Гость
Как правильно закрыть сокет ZMQ?

Сообщение Гость »


class ClientThread(MyThread): def __init__(self, context, frame): MyThread.__init__(self, context, frame) self._stop_event = None def run(self): self._socket = self._context.socket(zmq.SUB) address = 'tcp://localhost:5566' self._socket.connect(address) self._frame.append_info(f'Connect to address: {address}') self._socket.setsockopt(zmq.SUBSCRIBE, ''.encode('utf-8')) self._loop = True while self._loop: # self._stop_event = threading.Event() # while not self._stop_event.is_set(): response = self._socket.recv() self._frame.append_info(f'Pub msg: {response}') if response.decode('utf-8') == 'exit': break self._socket.close() self._socket = None print('Client socket close.') def close(self): self._loop = False # self._socket.close() # self._stop_event.set() I use the PUB-SUB model. I want to close the socket correctly.

I have used different ways to close the socket, but there always was some error.
  • Use the loop flag
  • Stop the socket directly
  • Use threading.Event()


Источник: https://stackoverflow.com/questions/780 ... -correctly

Вернуться в «Python»