Возникли проблемы с доступом к глобальному сокету из функции
У меня проблемы с вызовом .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, и я подтвердил, что myfunc()
вызывается активацией соответствующего намерения Алекса.
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')