1

我无法调用.send()在全局级别声明的套接字函数。

from nanomsg import Socket, PAIR, PUB

s2 = Socket(PAIR)
s2.connect('tcp://127.0.0.1:49234')
s2.send(b'connect')

def myfunc():
  global s2
  s2.send(b'Got here!')

myfunc()
print('closing socket')
s2.close()

在上面的例子中,发送的数据myfunc()永远不会到达接收套接字。我知道接收套接字有效,因为接收.send()到全局级别的。

-- 附录 --

只是想补充一点,我的实际应用程序是用于自定义 Alexa 技能的烧瓶询问 Web 服务,并且我已经验证myfunc()通过激活相应的 Alexa 自定义技能意图来调用它。

4

1 回答 1

1

你可以检查一下是否有time.sleep(0.1)帮助。连接需要一些时间,并且套接字可能无法立即准备好.send()

    s2 = Socket(PAIR)
    s2.connect('tcp://127.0.0.1:49234')
    time.sleep(0.2)
    s2.send(b'connect')
于 2017-08-02T02:12:21.017 回答