У меня есть код, который выполняет онлайн-распознавание. В данный момент выдает ошибку «RuntimeError: этот цикл событий уже запущен» в последней строке. Анаконда 2019.10, Python 3.7.4

# websockets
async def recognize(url, data):
    async with websockets.connect(url) as websocket:
        await websocket.send(data)
        recognized_text = ""
        recognized_text = await websocket.recv()
        #print(f"< {recognized_text}")
        #print(recognized_text)
        return recognized_text

in_file = open(filename1, "rb")
data = in_file.read()
in_file.close()
print(asyncio.get_event_loop().run_until_complete(recognize(url, data)))

Здесь устанавливается сеанс, а затем необходимо передать данные для обработки и получить распознанный текст. Я могу приблизительно представить, что делает веб-розетка. Устанавливает соединение с сервером, отправляет данные, затем ожидает ответа. Я не понимаю, как здесь работает asyncio. Я прочитал (questions / 53248431), что теперь это не работает, потому что у меня торнадо версии> = 5.0, они предложили понизить версию, но я не хочу. Как правильно переписать это? Объясните пожалуйста как это работает)

0
Hedgehog 14 Ноя 2019 в 17:47

1 ответ

Вы получаете сообщение об ошибке, потому что вышеприведенная программа / событие все еще работает, потому что оно не было уничтожено.

Поэтому в терминале введите следующую команду:

pkill -9 python 

А затем перезапустите программу.

(Это работает только в системах Linux)

0
Sushanth 15 Ноя 2019 в 16:15
Если эта команда не сработала, значит, вы не используете Linux Ubuntu.
 – 
Sushanth
15 Ноя 2019 в 16:14
В Windows откройте Диспетчер задач, найдите процесс python.exe, соответствующий вашей программе, и нажмите кнопку «Завершить процесс».
 – 
Sushanth
15 Ноя 2019 в 16:20