Email or username:

Password:

Forgot your password?
KizhiFox :blobfoxcomputer:

Ура, к концу вторых суток мучений я победил эту злоебучую связку из asyncio.Task и aiogram.Dispatcher!

Dispatcher всё никак не хотел закрываться и продолжал отвечать на запросы даже после закрытия таска. Не знаю, что не так с aiogram... А ботов должно быть несколько, и создаваться они должны динамически, чтобы юзеры могли сами своих ботов для уведомлений подключать, и Dispatcher в aiogram, кажется, не может динамически ботов подключать / отключать, соответственно, и диспетчеров должно быть несколько...

В общем, тихий ужас. Но я сделал, я молодец.

1 comment
KizhiFox :blobfoxcomputer:

Причём, когда я полез в aiogram разбираться, почему он там при task.cancel() не закрывается, даже если диспетчер в try... except asyncio.CancelledError обернуть, а пытается перезапустить соединение (вполне успешно), наткнулся на один презабавнейший комментарий:

# In cases when Telegram Bot API was inaccessible don't need to stop polling
# process because some developers can't make auto-restarting of the script
(aiogram/dispatcher/dispatcher.py::217)

То есть из-за того, что кто-то там не может переподключиться при падении соединения, мне нужно устраивать танцы с бубном вместо того, чтобы приказать процессу закрыться. Иначе он сам перезапустится. Нет, удобно, конечно, но блин :)))))))

Причём, когда я полез в aiogram разбираться, почему он там при task.cancel() не закрывается, даже если диспетчер в try... except asyncio.CancelledError обернуть, а пытается перезапустить соединение (вполне успешно), наткнулся на один презабавнейший комментарий:

# In cases when Telegram Bot API was inaccessible don't need to stop polling
# process because some developers can't make auto-restarting of the script
(aiogram/dispatcher/dispatcher.py::217)

Go Up