python sqlite3 блокировка базы

Всем доброго времени. Пишу бота на aiogram,делаю наполнение базы sqlite3 с сайта по ключам пользователей api/есть 3 функции которые парсят данные и наполняют базу.

Читал, что запись должна происходить 1 процессом, а чтение допускается несколькими.

В боте делал через scheduler вызов функций по таймеру, происходило пересечение функций, как я понимал одна еще наполняла база, и запускалась другая, так же делал чтение из базы на наличие новых сообщений для отправки пользователю-в результате чего прилетал блок базы.

вывел функции по наполнению базы в отдельный файл и начал запускать cronom. но периодически ловлю блокировку базы.

Traceback (most recent call last):
  File "/usr/local/lib/python3.10/dist-packages/apscheduler/executors/base_py3.py", line 30, in run_coroutine_job
    retval = await job.func(*job.args, **job.kwargs)
  File "/home/main.py", line 86, in foto_message
    for i in users_id_api():
  File "/home/db.py", line 91, in users_id_api
    info=cur.execute("SELECT id,api,api_feedback FROM users WHERE action=1 ").fetchall()
sqlite3.OperationalError: database is locked

что я делаю не так, или sqlite3 вообще не предназначена для такой работы, только для статический данных..??

заранее благодарю.


Ответы (1 шт):

Автор решения: NTA

Эта ошибка возникает, когда несколько процессов используют один и тот же файл сеанса, то есть при запуске двух или более клиентов, при этом используя то же имя сеанса или в случае, если к файлу обращалась другая программа.

https://docs.pyrogram.org/faq/sqlite3-operationalerror-database-is-locked

→ Ссылка