Асинхронный ВК бот с базой данных. Как ускорить работу бота?

zxqb

Новичок
Пользователь
Апр 12, 2020
12
2
3
Пишу бот для вк, опыта 0 :)
Думаю, вопрос полезный, исходя из того, сколько всего пришлось найти что б узнать все это с нуля, может быть, кому-то и пригодится

Использую библиотеки vkbottle, sqlite3, aiosqlite, asyncio
vkbottle отвечает за асинхронную обработку сообщений, база на sqlite, aiosqlite и asyncio - асинхронные запросы к базе.
Запрос состоит из трех параметров. Параметры задает пользователь и они поочередно записываются в словарь {ИД: {'a': ['de'], 'b': ['fg'], 'c': ['hi']}}
Общая структура:
Python:
dict_id = {}
#функция запроса в базу первого типа
async def func_db_one(ids):
    async with aiosqlite.connect('base') as conn:
        cursor = await conn.execute("SELECT...")
        rows = await cursor.fetchall()
        return rows

#функция запроса второго типа
async def func_db_two(ids):
    async with aiosqlite.connect('base') as conn:
        cursor = await conn.execute("SELECT...")
        rows = await cursor.fetchall()
        return rows

#слушает команду для старта start - возможные команды
@bot.on.message(text=start)
async def wrapper(ans: Message):
#узнает ИД, записывает его в  словарь
    id_start = ans.from_id
    dict_id[id_start] = {}
    await ans("Выберите первый вариант запроса")

# слушает первый запрос
@bot.on.message(text=comm_one)
async def wrapper(ans: Message):
# тут были строки по добавлению первого запроса в словарь
        await ans("Выберите второй вариант запроса")


# слушает второй запрос
@bot.on.message(text=comm_two)
async def wrapper(ans: Message):
# тут были строки по добавлению второго запроса в словарь
        await ans("Выберите третий вариант запроса")


# слушает третий запрос и выдает данные с базы
@bot.on.message(text=comm_thr)
async def wrapper(ans: Message):
#строки по добавлению запроса в словарь
#проверка типа зпроса
        if запрос in фильтр:
            data = await func_db_one(ИД)
        else:
            data = await func_db_two(ИД)
#тут еще цикл перебора data для нормального вывода в следующий ans
        await ans("ответ = ", data)

Ну и собсно, по теме .. Использовать vkbottle вообще нормально? Что лучше и быстрее и дольше будет поддерживаться или еще чего?
SQLite лучше заменить MSQL? Почему? Или чем еще? Что быстрее и лучше?
Использование словарей и выборка данных из них сильно тормозит процесс, если будет много запросов? Лучше чем-то заменить?
Если не полноценные ответы на вопросы, то хотя бы темы на которые стоит обратить внимание подскажите
 
Последнее редактирование:
  • Мне нравится
Реакции: Student

Программист

Новичок
Пользователь
Апр 21, 2020
3
2
3
Нет намного легче делать бота через vkapi на ютубе куча уроков по нему на русском языке
 
  • Мне нравится
Реакции: Student

Форум IT Специалистов