2017-08-01 67 views
1

我在调用全局级声明的套接字功能时遇到问题。从功能内访问全局套接字时遇到问题

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技能的烧瓶中,要求网络服务,我已经验证myfunc()获取调用通过激活相应的Alexa自定义的技术意图。

+0

实际上你是否在任何地方调用myfunc()? – kdopen

+0

是的,我的实际应用程序是一个针对alexa技能的问题Web服务,我已验证“myfunc”实际上正在调用。 –

+1

嗯...只是发现上面的代码工作,如果我这样做是一个独立的脚本。然而,当我尝试用瓶子来做同样的事情时,请求web服务对s2.send()的调用挂在由于触发相应的Alexa自定义技能意图而被调用的函数中。 –

回答

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') 
+1

在所有应有的尊重下,这并不是O/P问题+他已经证实,即使在其他'.send()'做过的情况下,不会发生预期的结果(相反,问题有助于解决问题)。 – user3666197