проблемы с asyncio и веб-сокетами - PullRequest
0 голосов
/ 06 августа 2020

Я пытаюсь запускать задачи асинхронно, но мне нужно, чтобы мой websocket.client подключился до того, как другие задачи смогут работать. чтобы синхронизировать этот шаг, я ждал websockets.client.connect() и в основной функции помещал свой def connect в событие l oop. Теперь, когда я запускаю программу, я получаю оператор печати, который помещаю в начало функции, поэтому я знаю, что он вызывается, однако, похоже, есть проблема с функцией подключения в моем def. Я не знаю, связана ли это с функцией или с тем, как я ее вызываю, но она никогда не дает никаких ошибок, даже когда я принудительно закрываю программу. Программа просто продолжает работать без ошибок, пока я ее не закрою. Я разместил соответствующий код ниже, любая помощь будет очень признательна, спасибо. функции и main ниже:

async def connect(self):
    print('connect initiated...')
    uri = 'wss://' + userprincipalsresponse['streamerInfo']['streamerSocketUrl'] + '/ws'
    print(uri)
    self.connection = await websockets.client.connect(uri)

    if self.connection.open:
        print('Connection established')
        return self.connection

main:

if __name__ == '__main__':
    # create clinet object
    client = WebSocketClient()
    # define event loop
    loop = asyncio.get_event_loop()
    # start a connection to websocket
    connection = loop.run_until_complete(client.connect())
    
...