Возникли проблемы с доступом к глобальному сокету из функции

У меня проблемы с вызовом .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')
Другие вопросы по тегам