我在一個CPU上並行運行兩個python文件,這兩個文件都使用相同的sqlite3數據庫。我正在使用sqlalchemy處理sqlite3數據庫,我的理解是sqlalchemy處理一個應用程序中的所有線程數據庫問題。我的問題是如何處理來自兩個不同應用程序的訪問? 我的兩個程序之一是燒瓶應用程序,另一個是不時更新數據庫的cronjob。 似乎即使在sqlite數據庫的只讀任務鎖定數據庫,這意味着如果兩個應用程序想同時讀取或寫入,我會得到一個錯誤。sqlite3:避免「數據庫鎖定」衝突
OperationalError: (sqlite3.OperationalError) database is locked
讓我們假設我的cronjob應用程序每5分鐘運行一次。我怎樣才能確保我的兩個應用程序之間沒有衝突?我可以在訪問數據庫之前將一些讀取標誌寫入一個文件中,但在我看來應該有一個標準的方法來執行此操作? 而且我正在我的gunicorn應用程序,並在原則上也可以運行多個工作,所以,我最終還是要爲我燒瓶應用 感謝 超過2個並行作業......卡爾
你可以使用一個鎖文件,但您的問題將有經常訪問數據庫的線程數量的增加。我建議使用數據庫服務器(MySQL,PostgresQL ...)而不是SQlite。 –
是的SQLite並不是真正爲這個用例設計的。 @KlausD。是正確的,你需要更換它。 –
我使用Flask + sqlite和一個也沒有問題地與db交談的任務隊列。 SQLite可以從多個線程/進程中使用。 – coleifer