2012-09-13 12 views
2

創建一個小型Web應用程序以部署在Heroku上,我們希望在用戶點擊更新按鈕時更新數據庫中的條目。每天,我們會自動檢查並更新所有在過去24小時內未被某用戶更新的條目。使用線程更新Heroku上的數據庫?

更新函數和web應用程序是用Django編寫的,但因爲更新涉及到向另一個網站發送請求,所以需要幾秒鐘的時間來處理,而且我在考慮讓這些請求並行執行,因此多個用戶可以同時點擊不同的更新按鈕,並快速通過。

我們考慮在Heroku上使用Scheduler來進行24小時更新,但是有沒有一種線程應用程序/實現可以用於這種用例呢?任何提示都會很棒。

+0

小心共享資源被不同的線程修改...總是有點粗略...確保使用某種形式的鎖定機制 –

回答

2

Celery對於這樣的計劃任務來說非常棒。我發現Heroku在Heroku here上設置了工人,儘管我沒有使用Heroku,所以你自己在那裏。

芹菜使用看起來那樣簡單:

@celery.task 
def do_costly_database_update(some_data): 
    # do stuff 
    pass 

# And then in a view... 
do_costly_database_update.delay(some_data) 

編輯: 芹菜還可以處理經常性的任務,比如你有一個配置項像這樣每晚更新:

'every-night': { 
    'task': 'tasks.do_costly_database_update', 
    'schedule': crontab(hour=0, minute=0), 
    'args': some_data, 
}, 

所有的芹菜docs真的很好。

相關問題