Кажется, что выполнение Python Asyncio просто исчезает в никуда? - PullRequest
0 голосов
/ 30 октября 2019

Я разрабатываю бот Discord для сервера, на котором я работаю, включая музыкальные функции для него. Я могу заставить моего бота присоединиться к голосовому каналу через соответствующий вызов VoiceChannel.connect(), однако после этого асинхронное выполнение вообще не возвращает к моему коду. Все по-прежнему работает, но кажется, что оно снова исчезает в цикле событий (другие задачи запускаются по мере их возникновения).

Я определил, что проблема с VoiceChannel.connect() была в том, что я прошел через программу в PyCharm с того момента, когда я получил контроль над тем, где он ее вызывает. Я могу видеть все до того, как вызов выполняется просто отлично, однако после вызова он не возвращается (отладчик не вернулся после того, как я нажал Step Into My Code в точке вызова). Сам вызов даже выполнялся нормально, потому что он действительно подключился к речевому каналу, в котором я находился.

Я проверил, что условия для его подключения приемлемы, и я действительно не знаю, почемубеда. Вот стек в точке вызова (код в https://github.com/young-amateurs-rc/arbys/tree/master/modules/music):

await mgr.connect(message.author.voice.channel) (tree_root, __init__.py:89)
await self.interface.connect() (connect, manager.py:49)
self._client = await self.channel.connect(timeout=5) (connect, interface.py:98) (именно это вызывает проблемы)

Я не знаю, почему VoiceChannel.connect() не возвращается обратно в мой код после запуска, и я не знаюЯ не вижу причин, по которым этого не следует делать. Есть ли какое-то условие внутри discord.py, вызывающее это? Что произошло внутри библиотеки?

Python 3.7.2
discord.py 1.2.3
aiohttp 3.5.4

...