我正在開發一個Rails應用程序,它通過從第三方站點(類似於http://railscasts.com/episodes/190-screen-scraping-with-nokogiri)刮取價格來提供各種產品的定價數據。Rails&Heroku上的定期後臺作業
由於我是編程新手,現在我通過將代碼放入rake任務來手動執行此操作。任務循環遍歷數據庫中的所有產品,並通過刮取更新其價格。完成需要幾個小時(因爲有1000個產品),但大部分時間都是通過撥打睡眠來完成的,所以我可以限制自己的速度。現在我從命令行手動調用rake任務,但是我想每週定期執行一個自動在後臺運行的作業。
經過一些研究,似乎有幾種方法可以做到這一點(Resque,DelayedJob,Cron /每當),但我不確定哪個最適合我的需要。另外,我正在通過Heroku進行部署,所以我想確保我不會在工人的dynos上浪費金錢;現在這只是一個副項目,所以我不想花那麼多錢。
什麼將是一個簡單和成本效益的方式來做到這一點?
哇,現在我看着這個答案,我必須非常喜歡列表:D – Ashitaka
如果我無法將我的任務分解成更小的塊,對我應該做什麼有什麼建議? – slykat
你有什麼嘗試?你是否只抓取你定義的頁面?如果你是,那麼你可以把它們放在一個數組中,並且有一個函數,這個函數根據星期幾從某個索引開始,到數組的另一個索引結束。如果你正在拼寫一大堆你沒有定義的頁面,那麼你可以設置一個硬性限制。例如,每天有1000件產品。所以你應該有一個計數器,當它達到1000時,保存你想要刪除的下一頁的網址或ID,並在你離開的第二天繼續。 – Ashitaka