Для создания асинхронного connection_pool вам понадобится использовать модуль `aiomysql`. Ниже приведен пример кода модуля `database.py`, который содержит асинхронную функцию для создания connection_pool:
```python
import aiomysql
async def create_connection_pool():
# Создание connection_pool
pool = await aiomysql.create_pool(
host='localhost',
port=3306,
user='username',
password='password',
db='database_name',
autocommit=True
)
return pool
```
В вашем основном модуле, где находится `dp.message_handler`, вы можете импортировать `create_connection_pool` из модуля `database.py` и использовать его для выполнения асинхронных запросов к базе данных. Пример кода:
```python
from aiogram import Bot, types
from aiogram.dispatcher import Dispatcher
from aiogram.utils import executor
from database import create_connection_pool
bot = Bot(token='YOUR_TOKEN')
dp = Dispatcher(bot)
async def on_startup(dp):
await bot.send_message(chat_id='YOUR_CHAT_ID', text='Бот запущен')
# Создание connection_pool
dp['pool'] = await create_connection_pool()
# Остальной код запуска бота
@dp.message_handler(commands=['start'])
async def start(message: types.Message):
# Использование connection_pool для выполнения запросов
async with dp['pool'].acquire() as connection:
async with connection.cursor() as cursor:
# Выполнение запроса
await cursor.execute("SELECT * FROM table")
results = await cursor.fetchall()
# Обработка результатов
if __name__ == '__main__':
executor.start_polling(dp, on_startup=on_startup)
```
В этом примере функция `on_startup` вызывается при запуске бота и создает connection_pool при помощи `create_connection_pool`. Затем connection_pool сохраняется в `dp['pool']` для дальнейшего использования в `dp.message_handler`. Он также демонстрирует использование connection_pool для выполнения асинхронных запросов к базе данных в `dp.message_handler`.