2015-06-02 24 views
4

我正在尋找在Heroku中運行非常長的任務的最佳方式。用Ruby On Rails在Heroku上運行一項長期任務的最佳方式是什麼?

我爲我的web應用程序使用Ruby On Rails,並且我有一個非常長的任務,我希望在每個星期的星期天晚上運行它。大約需要15〜20分鐘。我已經有Rufus-Scheduler,但我不確定它是最有效的解決方案。

我還發現Backgrounding Tasks in HerokuDelayed Job有關。但這是處理它的最好方法嗎?

謝謝。

+0

背景最適合由您的網站用戶觸發的任務,即您的Rails應用需要啓動一些與請求 - 響應週期異步完成的任務。這是一個複雜的情況,而不僅僅是運行獨立於您的Web應用程序的每週任務,例如使用Cron或Rufus調度程序。對Rufus調度程序有什麼保留?表面看來,這似乎是一個好方法。 –

+0

感謝您的答案和對背景的解釋。 我使用Rufus調度器來更新一些用戶(理論上)不使用該應用程序的時間段內的大數據。但只要15-20分鐘就沒有了。 那麼,如果我在基於Heroku的生產環境中使用Rufus-Scheduler來完成如此大的任務,會不會是一個問題? (現在免費版) – Kilian

+0

我不認爲這是一個問題。如果你擔心它會佔用太多的系統資源,那麼可以嘗試通過在每個批次之間進行睡眠批量執行任務來減慢它的速度。 –

回答

4

這是我使用,我每天晚上運行一個作業:https://devcenter.heroku.com/articles/scheduler

它的作品真的很好,如果你的工作被配置爲一個rake任務。鏈接中的指南向您展示瞭如何配置所有內容,甚至解決長時間運行的作業。

+1

你應該像@NickM所建議的那樣,將它作爲Rake任務來完成。從調度程序到Rails的鉤子需要儘可能簡單,Rake是一個很好的解決方案。而且它可以讓你輕鬆測試它。 –

+0

非常感謝您的解決方案,我會實施它。 – Kilian

相關問題