ERROR:asyncio:Task exception was never retrieved выскакиевает при использовании asyncio.WindowsSelectorEventLoopPolicy()
такая проблема, постоянно вылетала следующая ошибка:
INFO:aiogram:Bot: BotEx [@BotEx]
INFO:aiogram.dispatcher.dispatcher:Start polling.
ERROR:asyncio:Exception in callback _ProactorBasePipeTransport._call_connection_lost(None)
handle: <Handle _ProactorBasePipeTransport._call_connection_lost(None)>
Traceback (most recent call last):
File "C:\Users\Name\AppData\Local\Programs\Python\Python39\lib\asyncio\events.py", line 80, in _run
self._context.run(self._callback, *self._args)
File "C:\Users\Name\AppData\Local\Programs\Python\Python39\lib\asyncio\proactor_events.py", line 162, in _call_connection_lost
self._sock.shutdown(socket.SHUT_RDWR)
ConnectionResetError: [WinError 10054] Удаленный хост принудительно разорвал существующее подключение
ERROR:asyncio:Exception in callback _ProactorBasePipeTransport._call_connection_lost(None)
handle: <Handle _ProactorBasePipeTransport._call_connection_lost(None)>
Traceback (most recent call last):
File "C:\Users\Name\AppData\Local\Programs\Python\Python39\lib\asyncio\events.py", line 80, in _run
self._context.run(self._callback, *self._args)
File "C:\Users\Name\AppData\Local\Programs\Python\Python39\lib\asyncio\proactor_events.py", line 162, in _call_connection_lost
self._sock.shutdown(socket.SHUT_RDWR)
ConnectionResetError: [WinError 10054] Удаленный хост принудительно разорвал существующее подключение
БД бота висела на OpenServer. Я подумал, что OS разрывает соединение через 1440сек. Перешел на MySql Server, ошибка осталась та же. Месяцами ранее мне советовали внести в свой код следующую строчку: asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
Используя ее мой бот запускается, но стоит мне отправить хоть одну команду (почти каждая команда - запрос в бд), как бот сразу падает и вылетает следующая ошибка:
ERROR:asyncio:Task exception was never retrieved
future: <Task finished name='Task-10' coro=<Dispatcher._process_polling_updates() done, defined at C:\Users\Name\AppData\Local\Programs\Python\Python39\lib\site-packages\aiogram\dispatcher\dispatcher.py:407> exception=RuntimeError("Task <Task pending name='Task-11' coro=<Handler.notify() running at C:\\Users\\Name\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\aiogram\\dispatcher\\handler.py:117> cb=[gather.<locals>._done_callback() at C:\\Users\\Name\\AppData\\Local\\Programs\\Python\\Python39\\lib\\asyncio\\tasks.py:766]> got Future <Task pending name='Task-12' coro=<Pool._wakeup() running at C:\\Users\\Name\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\aiomysql\\pool.py:203>> attached to a different loop")>
Traceback (most recent call last):
File "C:\Users\Name\PycharmProjects\pythonProject2\db.py", line 34, in user_info
await cur.execute('SELECT FIO, Phone, Role, Rating, ChatID FROM Users '
File "C:\Users\Name\AppData\Local\Programs\Python\Python39\lib\site-packages\aiomysql\cursors.py", line 239, in execute
await self._query(query)
File "C:\Users\Name\AppData\Local\Programs\Python\Python39\lib\site-packages\aiomysql\cursors.py", line 457, in _query
await conn.query(q)
File "C:\Users\Name\AppData\Local\Programs\Python\Python39\lib\site-packages\aiomysql\connection.py", line 469, in query
await self._read_query_result(unbuffered=unbuffered)
File "C:\Users\Name\AppData\Local\Programs\Python\Python39\lib\site-packages\aiomysql\connection.py", line 672, in _read_query_result
await result.read()
File "C:\Users\Name\AppData\Local\Programs\Python\Python39\lib\site-packages\aiomysql\connection.py", line 1153, in read
first_packet = await self.connection._read_packet()
File "C:\Users\Name\AppData\Local\Programs\Python\Python39\lib\site-packages\aiomysql\connection.py", line 598, in _read_packet
packet_header = await self._read_bytes(4)
File "C:\Users\Name\AppData\Local\Programs\Python\Python39\lib\site-packages\aiomysql\connection.py", line 646, in _read_bytes
data = await self._reader.readexactly(num_bytes)
File "C:\Users\Name\AppData\Local\Programs\Python\Python39\lib\asyncio\streams.py", line 723, in readexactly
await self._wait_for_data('readexactly')
File "C:\Users\Name\AppData\Local\Programs\Python\Python39\lib\asyncio\streams.py", line 517, in _wait_for_data
await self._waiter
RuntimeError: Task <Task pending name='Task-11' coro=<Handler.notify() running at C:\Users\Name\AppData\Local\Programs\Python\Python39\lib\site-packages\aiogram\dispatcher\handler.py:117> cb=[gather.<locals>._done_callback() at C:\Users\Name\AppData\Local\Programs\Python\Python39\lib\asyncio\tasks.py:766]> got Future <Future pending> attached to a different loop
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\Name\AppData\Local\Programs\Python\Python39\lib\site-packages\aiogram\dispatcher\dispatcher.py", line 415, in _process_polling_updates
for responses in itertools.chain.from_iterable(await self.process_updates(updates, fast)):
File "C:\Users\Name\AppData\Local\Programs\Python\Python39\lib\site-packages\aiogram\dispatcher\dispatcher.py", line 235, in process_updates
return await asyncio.gather(*tasks)
File "C:\Users\Name\AppData\Local\Programs\Python\Python39\lib\site-packages\aiogram\dispatcher\handler.py", line 117, in notify
response = await handler_obj.handler(*args, **partial_data)
File "C:\Users\Name\AppData\Local\Programs\Python\Python39\lib\site-packages\aiogram\dispatcher\dispatcher.py", line 256, in process_update
return await self.message_handlers.notify(update.message)
File "C:\Users\Name\AppData\Local\Programs\Python\Python39\lib\site-packages\aiogram\dispatcher\handler.py", line 117, in notify
response = await handler_obj.handler(*args, **partial_data)
File "C:\Users\Name\PycharmProjects\pythonProject2\handlers.py", line 419, in info
user = await db.user_info('chatID', message.chat.id)
File "C:\Users\Name\PycharmProjects\pythonProject2\db.py", line 52, in user_info
user.chatID = ChatID
File "C:\Users\Name\AppData\Local\Programs\Python\Python39\lib\site-packages\aiomysql\utils.py", line 139, in __aexit__
await self._pool.release(self._conn)
RuntimeError: Task <Task pending name='Task-11' coro=<Handler.notify() running at C:\Users\Name\AppData\Local\Programs\Python\Python39\lib\site-packages\aiogram\dispatcher\handler.py:117> cb=[gather.<locals>._done_callback() at C:\Users\Name\AppData\Local\Programs\Python\Python39\lib\asyncio\tasks.py:766]> got Future <Task pending name='Task-12' coro=<Pool._wakeup() running at C:\Users\Name\AppData\Local\Programs\Python\Python39\lib\site-packages\aiomysql\pool.py:203>> attached to a different loop
Мой код для запуска бота и коннекта к бд:
import logging
import asyncio
import sys
import aiomysql
import db
from aiomysql import create_pool
from aiogram.contrib.fsm_storage.memory import MemoryStorage
from aiogram import Bot, Dispatcher, executor
import keyboards
from messages import MESSAGES
from settings import mysql
from config import USER, PASSWORD, HOST, PORT, DATABASE, TOKEN, PAYMENTS_PROVIDER_TOKEN
asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
loop = asyncio.get_event_loop()
client = Bot(token=TOKEN, parse_mode='HTML')
dp = Dispatcher(client, storage=MemoryStorage(), loop=loop)
logging.basicConfig(level=logging.INFO)
async def db_config():
if not mysql.conn:
try:
mysql.conn = await create_pool(
host=HOST,
port=PORT,
user=USER,
password=PASSWORD,
db=DATABASE,
charset='utf8',
use_unicode=True,
loop=loop
)
except aiomysql.Error as e:
print(f'Error connecting: {e}')
sys.exit(1)
if __name__ == '__main__':
loop.run_until_complete(db_config())
from handlers import dp
executor.start_polling(dp, skip_updates=False)
Источник: Stack Overflow на русском