Часть I: «Что-то не так в моем коде?»:
Нет, код варианта использования ZeroMQ кажется безупречным.
Не стесняйтесь добавлять столько точек трассировки отладки в MCVE-источник, сколько потребуется на охоте, чтобы подробно задокументировать, откуда они попадают и какие фактические ZMQError()
сообщаются на лету:
[ 'EADDRINUSE', # L3
'EADDRNOTAVAIL', # L3
'ECONNREFUSED', # L3
'ENETDOWN', # L1 / L2 / L3
'ENODEV', # L1
'EFAULT',
'EFSM', # ZMQ Finite State Machine not in a state to obey this
'EAGAIN', # ZMQ Context() blocked
'EINPROGRESS',
'EINVAL', # ZMQ did not recognise a valid value in param
'EMTHREAD',
'ENOBUFS', # resources
'ENOMEM', # resources
'ENOCOMPATPROTO', # ZMQ protocol-handshaking
'EPROTONOSUPPORT', # ZMQ protocol
'ENOTSOCK', # ZMQ resource - not recognised as an "own" socket
'ENOTSUP', # ZMQ cannot support a request
'ETERM', # ZMQ Context() already entered into a .term()-state
...
]
Часть II: «Как изменить настройки в AWS?»:
Эта часть немного сложна.
Во-первых, проконсультируйтесь с вашими контрактными параметрами. Если оператор AWS не разрешает вам инициировать TCP / IP-сервисы между экземплярами, никакой другой шаг, кроме пересмотра контракта (выбор другого, менее ограниченного продукта), не может помочь.
Если TCP / IP-сервисы не заблокированы, проконсультируйтесь со службой поддержки оператора AWS, какие номера портов разрешены в соответствующих инстансах. Операционная система, помимо политик оператора, упомянутых выше, может иметь некоторые дополнительные ограниченные диапазоны номеров портов, и если ваше приложение использует блокировку O / S <transport-class>://<address>:<port#>
(являющуюся == 1111
в сценарии использования MCVE выше), любая попытка будет систематически завершаться неудачей из-за попытки использовать запрещенный ресурс (изменение <port#>
- самое простое средство, не так ли?).
В любых других случаях ZMQError
поможет вам диагностировать основную причину заблокированных операций. Не стесняйтесь добавлять столько точек трассировки отладки, сколько необходимо на охоте.
person
user3666197
schedule
28.03.2018