Q1 : "Может ли это ... сосуществование на основе сопрограмм ... быть причиной этого?"
Да,
в основном, если сопрограммы используют один и тот же экземпляр REQ
-архетипа.
Q2 : "... может ли это ... несколько таких клиентов подключены к серверу ... быть проблемой? "
Нет,
при условии, что каждый клиент работает с собственным экземпляром REQ
-архетипа, подключенного к REP
- (сервер), не должно быть причин для неминуемых блокировок (подробнее см. REQ/REP
принципиальная вероятность попасть в безнадежный взаимный тупик, где единственное, чего вы не можете знать, это когда это произойдет, но мы все можем быть уверены, что это произойдет)
Если требуется atomi c, одноэлементное уникальное выполнение (и если реализация сервера позволяет это), можно регистрировать каждую задачу REQ
- {UUID}
, чтобы предотвратить двойное -шоты на одну и ту же цель-задачу.
Трудно сказать больше, без реального MCVE / MWE-представления проблемы (.poll
-ing l oop logi c / таймаут / стратегии-исправления)
В случае, если вы никогда не работали с ZeroMQ ,
, здесь вы можете впервые взглянуть на "ZeroMQ: Принципы менее чем за Пять секунд "
прежде, чем углубиться в подробности