我有這種情況:Python多線程
用Zope/Plone和一些mine python API創建的網頁。有一個網頁,稱之爲「a」,通過python方法調用一個數據庫(Postgres)並返回一些信息。在頁面「a」上,你可以修改數據庫數據「離線」(我打算修改不是立即寫入數據庫,而是在你按下「保存」並調用python API方法後的第二個時刻)。所以,想象一下這種情況:一個名爲「Sam」的用戶加載頁面並開始修改數據。同時,名爲「Sara」的用戶通過頁面「a」點擊「保存」修改數據庫。現在,Sam沒有實際的數據庫數據:他會推「保存」並覆蓋Sara的數據更改。
我會在我的網頁上實時發出提醒。我以爲我可以做這樣的事情:
做一個AJAX調用,這是不可阻擋的,並繼續與頁面呈現。 AJAX調用一個python方法創建一個無限循環的線程(在「X」條件下)。當我在數據庫上寫入數據時,我會調用一個函數來改變「X條件」,停止線程並返回AJAX。
此外,我不能鎖定數據庫,因爲我必須免費訪問每個想要修改我的數據庫的用戶。
我的問題是:如何識別python線程?我剛剛看到,從Thread繼承的類上的每個方法都需要「self」作爲參數。此外,當我訪問「a」頁面時,我必須調用該線程,這將在代碼中的某處(例如在「threads」模塊中),但插入位於另一個模塊上。那麼,我怎樣才能實現我的想法?
如果有人有另外一個設想,告訴我沒有任何問題:)
你的回答很好,但我想告訴用戶,在某個istant中,當他打開「a」頁面時,另一個用戶更新數據庫。然後以propoer的方式更改字段(在「a」頁面) – DonCallisto
更新了我的答案,當我收到您的評論時,仍然鍵入最後幾段。 – marr75