2011-05-26 30 views
0

我使用python腳本(在Linux Web服務器上)根據請求重定向用戶。重定向基於數據庫(Python字典),數據庫本身由遠程CSV文件構建。在Python腳本中重定向url期間延遲文件更新

現在,我必須手動更新數據庫,但CSV文件可以隨時更改。

我正在尋找一種方法來在每個用戶請求後(10秒後)更新數據庫。通過這種方式,數據庫始終保持最新狀態,用戶不會受到更新影響。

我想與棚模塊,但它不工作。

import sched, time 
s = sched.scheduler(time.time, time.sleep) 
s.enter(0, 1, app.redirect,()) 
s.enter(10, 1, app.data_base_update,()) 
s.run() 

我們的目標是快速保持URL重定向用戶和延遲的更新後。有沒有一個很好的解決方案,以獨特的腳本文件做到這一點?

回答

0

通過在後臺更新COPY並立即切換並將更新後的副本放入實時副本,可以更好地爲您服務。因此,不會等待用戶,並且您可以隨時進行此操作。你可能最好不要在每個用戶請求後10秒(想象一下大量的請求......它會讓你的服務器屈服)。您可以安排一個cron腳本或其他自動化任務,每分鐘或半小時等等;根據任務的大小,還可以限制CPU利用率。

請注意,由於您正在使用遠程數據,因此您的解決方案仍不能確保數據庫始終處於最新狀態。但不幸的是,這是使用遠程數據的代價。如果遠程服務器不屬於您,請確保不要錘擊遠程服務器。 =)

+0

好的。如何使用python在web服務器的後臺執行自動更新? – Thammas 2011-05-26 22:59:02

+0

@Thammas:使用cron作業(如果您的主機將它作爲服務提供,或者您在Linux或Mac計算機上),則使用cron作業(谷歌作爲'cron'聯機幫助頁面;或者一個黑客可能會有一個python進程做你想做的事情,在一個無限的'while True:'循環,做'try:[do stuff]''除了Exception例外:[alert you]''time .sleep(...)'每次 – ninjagecko 2011-05-26 23:05:00

+0

遠程服務器是Google服務器,遠程文件相對較小(50ko電子表格)。主持人是Kodingen.com。確定循環,但是如何在運行時停止任務? – Thammas 2011-05-26 23:11:07