nanomsg测量器插座的可读状态不佳

时间:2015-05-19 09:13:59

标签: nanomsg

我在Python中使用带有nanomsg的SURVEY可伸缩性协议。

我有一堆受访套接字,我将测量员连接到他们身上 在循环中;然后,我等待 surveyor.send_fd 可读。我认为它至少与一个受访者有关, 然后我发送调查。 在受访者方面,我等待 respondent.recv_fd 可读,我致电respondent.recv()了解 调查,然后我发送答案。 回到测量师,我等待 surveyor.recv_fd 可读,我打电话给surveyor.recv()以获得受访者的答案。

有时我在尝试阅读受访者的答案时会收到错误:

Traceback (most recent call last):
    [...]
nanomsg.NanoMsgAPIError: Operation cannot be performed in this state

我简化代码以显示问题:

test_respondent.py

import nanomsg
import select
resp = nanomsg.Socket(nanomsg.RESPONDENT)
resp.bind("tcp://*:6542")
print 'waiting for respondent to be readable'
select.select([resp.recv_fd],[],[])
print 'receiving survey'
print resp.recv(flags=nanomsg.DONTWAIT)
print 'sending reply to surveyor'
resp.send("reply")

test_surveyor.py

import select
import nanomsg
s = nanomsg.Socket(nanomsg.SURVEYOR)
s.connect("tcp://127.0.0.1:6542")
print 'waiting for surveyor to be connected'
select.select([s.send_fd],[],[])
s.send("hello", nanomsg.DONTWAIT)
print "waiting for surveyor to be readable"
select.select([s.recv_fd],[],[])
print 'receiving reply from respondent'
print s.recv(flags=nanomsg.DONTWAIT)  

test.sh

python test_respondent.py &
python test_surveyor.py

多次执行测试应该导致所描述的异常 在某些情况下。

知道我做错了什么吗?以及如何解决问题?

0 个答案:

没有答案