我在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
我简化代码以显示问题:
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")
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)
python test_respondent.py &
python test_surveyor.py
多次执行测试应该导致所描述的异常 在某些情况下。
知道我做错了什么吗?以及如何解决问题?