2011-03-22 274 views
0

爲了監控在Django mysql表的變化,我已經寫了一些代碼如下,如何在django中監控mysql表的變化?

while not find_close_signal(): 
    time.sleep(10) 
    if MyProject.models.MyModel.objects.all().exists(): 
     some_execution() 

但是,這是行不通的。如果開始時表中沒有條目,則some_execution()將永遠不會運行,甚至以後會有記錄通過其他帶外方式填充到該表中。

有沒有人遇到過這樣的問題?

我在「manage.py殼」也發現,這個問題會發生一模一樣的:任何其它條目添加到數據庫出這個殼不能在這個外殼被發現。這是真的還是我犯了一些錯誤?由於

回答

1

不知道這是一個問題,但它可能是你有一個事務內部執行這段代碼,所以在這種情況下,你看不到任何變化。

還有一件事是你可以在這個檢查中跳過「.all()」。

0

可以標記分貝爲 'dirty' 這樣做的Django丟棄緩存的結果:

from django.db import transaction 
transaction.set_dirty()