Занимаюсь разработкой телеграм-бота, число пользователей которого будет составлять более 1000 человек.
В работе бота предусмотрена бд. Выбор пал Postgresql. Так как планируется большое кол-во юзеров, решил использовать принцип асинхронности, используя asyncpg.
Вот модуль, где я провожу соединение с Postgres:
import asyncio
import asyncpg
from config_data.config_db import ConfigDb, load_config_db
config: ConfigDb = load_config_db()
class DataBase:
def __init__(self, loop: asyncio.AbstractEventLoop):
self.pool = loop.run_until_complete(
asyncpg.create_pool(
user=config.database.pg_user,
password=config.database.pg_password,
host='localhost',
port='5432'
)
)
loop = asyncio.get_event_loop()
db = DataBase(loop)
В другом модуле я провожу операции над таблицей:
from db.postgresql import db
async def add_name(name: str):
await db.pool.execute('INSERT INTO users (name) VALUES ($3)', name)
Эту функцию я использую я использую при запросе имени и когда имя вводится, в терминале появляется ошибка:
asyncpg.exceptions._base.InterfaceError: cannot perform operation: another operation is in progress