Я использую библиотеку pyzmq
для установления связи между двумя процессами Python на одном компьютере. Глядя на доступные шаблоны обмена сообщениями, предлагаемые ZMQ, неясно, какой из них подходит.
В моем случае оба процесса должны отправлять сообщения друг другу независимо в некоторые случайные моменты времени. По сути, в разные моменты каждый процесс является одновременно клиентом и сервером. Некоторое визуальное описание ниже.
Для реализации этого шаблона я использую два сокета ZMQ.PAIR
. Каждый процесс имеет .bind()
-s сокет для получения и .connect()
-s для другого к .send()
всякий раз, когда возникает необходимость.
Аналогичным образом у каждого есть выделенный поток для обработки получение, которое блокирует.
Однако этот дизайн кажется мне немного натянутым, и мне интересно, есть ли установка более естественная и подходящая для этого сценария? Я также предполагаю, что это должно быть довольно распространенным явлением. В текущем дизайне мне также не нравится то, что мне нужно вручную заботиться об очистке двух сокетов, когда процессы заканчиваются.