2014-07-18 31 views
0

我寫了一個小的守護進程腳本,它將檢查模型(Foo)字段的狀態,如果它是0,則更新另一個模型(Bar),如果它是1,則不要執行任何操作。django守護進程無法讀取數據庫更新

守護進程正在運行的罰款,而如我們預期,如果模型狀態是0

請從這裏找到鏈接到腳本正在更新:click

但是一旦我們啓動守護程序腳本,之後無法讀取數據庫更改。 即使在狀態爲0的模型Foo中創建了一個對象,守護進程開始運行後,守護程序也無法讀取它,因此模型Bar沒有像預期的那樣得到更新。

我該如何解決這個問題?

+1

[Multiple processes access Django db backend;記錄沒有顯示,直到手動調用\ _commit](http://stackoverflow.com/questions/1107091/multiple-processes-accessing-django-db-backend-records-not-showing-up-until-man) –

+0

你有您的默認隔離級別存在問題... –

+0

@brunodesthuilliers:我剛剛得到解決方案。請在下面找到答案。 – Jinesh

回答

0

基本問題是,在後續的守護進程進程檢查中,數據庫狀態與守護進程啓動時相同。

我從這個link得到了解決方案的提示。

在每個orm查詢之前,我重置連接,現在orm正在讀取更新的數據庫。

def reset_database_connection(): 
    from django import db 
    db.close_connection()