Решил я значит переключить бота на серверную бд из-за "Database is locked". Это ошибка sqlite которая
была временной бд бота. А ошибка связана с невозможностью мультипоточного изменения таблицы. У меня вопрос, какую бд лучше всего использовать для мультипоточной записи, без таких ошибок как в sqlite.
Я решил это ("Database is locked") путём прокси всех запросов и глобальной очередью к бд. А нормальные обертки провайдера sqlite умеют синхроинть код (запрос) автоматически. Это в любом случае не подходит для высоконагруженного бота, но решает проблему, если запросов не много, но могут быть почти одновременно.
nnikolyaa, нет, это не параметр. Высоконагруженные боты как правило работают в многопоточном режиме, т.е. каждый запрос к боту обрабатывается отдельно (что позволяет обрабатывать их параллельно). Из-за этого, к базе происходят множественные обращения. Так вот очередь в данном случае - это просто флаг, который устанавливается, когда выполняется запрос в БД и снимается, когда запрос будет выполнен. Другие обращения просто напросто должны крутиться в цикле и ждать смены флага. Флаг сменяется, поток выполняет запрос с установкой флага и так далее.
Этот вариант не самый производительный, но решает проблему с многоразовым доступом к бд