Наконец-то я нашел в своем коде место, где я выполнял длинный цикл (около 2 минут), прежде чем совершить коммит. Я исправил это и, как предложил @DB, увеличил время ожидания до 30 секунд. Проблема, кажется, решена. Спасибо, парни!

ороший способ сделать блокировку файла с повторным входом в контекстном менеджере под Python 2.7? Я просто хочу быть уверен, что rlock () будет эффективным, чтобы я мог заставить многопоточное приложение использовать один файл базы данных.

import sqlite3
import threading
import os

class ConnectionHolder:
    def __init__(self, connection):
        self.path = connection
        self.lock = threading.RLock()

    def __enter__(self):
        self.lock.acquire()
        self.connection = sqlite3.connect(self.path)
        self.cursor = self.connection .cursor()
        return self.cursor


    def __exit__(self, exc_class, exc, traceback):
        self.connection .commit()
        self.connection .close()
        self.lock.release()

conn_holder = ConnectionHolder(os.path.join(os.path.dirname(__file__), 'data/db/database.db'))

if __name__ == '__main__':
    with conn_holder as c:
        c.execute("SELECT * FROM 'sample_table'")
        result = c.fetchall()
        print result

Ответы на вопрос(1)

Ваш ответ на вопрос