2015-06-23 93 views
0

我的控制器代碼(以python實現)首先更新DB,然後發送201狀態代碼,指示它已在數據庫中更新。 問題是等待從數據庫獲取此更新的人不會立即工作,因爲數據庫更新需要一些時間(約0.5秒)才能生效。控制/推遲發送201狀態

有沒有一種方法可以控制/推遲發送201? 任何示例代碼/鏈接將不勝感激。

+1

我們應該假設你正在構建一個RESTful HTTP服務器使用Twisted Web?我可以從你的問題的標籤中推斷出,但在問題本身中陳述這可能會更好。標籤是人們找到你的問題的方式:你不應該根據他們來解釋問題本身。 –

回答

0

我可以建議2個選項,這兩個選項都需要您的代碼「等待」,直到確定數據現在可以檢索。第一個選項是使用time.sleep()。如果你確定你知道更新到數據庫需要多長時間,你可以硬編碼靜態等待時間

time.sleep(0.5) # 1/2 a second pause 

缺點這種方法的是,等待時間是硬編碼的,所以如果更新需要大量的時間越長指定的等待時間,您再次遇到同樣的問題。

第二種方法是在while循環中寫入數據庫之後立即查詢寫入的值,並且只有當您成功時才返回,讀回您更新的值。

# Pseudocode 
db.update(data) 
while True: 
    rdata = db.retrieve(id_for_data) 
    if rdata.field == data.field: 
     break 
return response, http_code 

缺點這種方法的是,你可能等待很長一段時間(或永遠)如果數據庫的更新需要一段時間(甚至失敗)