我有一個數據庫表,它描述了在分佈式系統上處理的作業。因此,整個工作分成許多小部分,每個部分在自己的環境中的不同機器上處理。從多個進程更新SQLAlchemy字段線程安全
我想保留一個簡單的日誌,告訴每個進程如何生效,因此每個節點都使用SQLAlchemy連接到同一個作業表,並將其作業編號和狀態附加到UnicodeText字段的末尾。
我希望看到這樣的:
Part 1: complete<br/>
Part 2: complete<br/>
Part 3: error<br/>
Part 4: complete<br/>
...etc
我只是在每個節點上做了process.log += "Part 1: complete\n"
當它處理完的部分。然後一個session.commit()
我知道零件號碼將失序,這對我的目的是好的,但發生了什麼事情,而是我只獲得總零件的幾個條目。我認爲這是因爲許多作業正在同時完成,並且執行append + =不是線程安全的。
我對會議不太瞭解,所以我不知道所有的技巧來配置它。我曾嘗試使用NullPool無效。
有沒有什麼辦法可以在這樣的分佈式環境中使append操作線程安全?
有道理。感謝您的澄清。我知道類似的事情正在發生,但無法確定操作的確切順序。在這種情況下,每個部分的記錄對於我所需要的都是過度的,但總的來說,我認爲你對使用數據庫是有利的。我以某種方式解決了這個問題,但是我不記得那麼久了。 :o – user1914881 2014-01-24 02:31:21