2012-07-24 179 views
15

所以現在我有一個delayed_job的實現,它完全適用於我的本地開發環境。爲了啓動我的機器上的工作人員,我只運行rake jobs:work,它完美的工作。在Heroku上運行delayed_job worker?

爲了讓delayed_job在heroku上工作,我一直在使用幾乎相同的命令:heroku run rake jobs:work。這個解決方案的工作原理是,我不必爲Heroku支付任何工人費用,但是我必須保持我的命令提示符窗口打開,否則delayed_job工作人員在關閉它時停止。即使關閉命令窗口,是否有一個命令可以永久保留delayed_job工作人員的工作?或者還有另一種更好的方法來解決這個問題?

回答

9

添加

worker: rake jobs:work 

Procfile

編輯:

即使您從控制檯運行它,你「買」工人賽道,但是Heroku的每秒碧玲。所以你不支付,因爲你有750小時免費,月最壞情況下有744小時,所以你有額外的dynos,調度任務等免費6小時。

+2

該文檔在這裏:https://devcenter.heroku.com/articles/delayed-job – zsquare 2012-07-24 10:36:10

+5

即使你從你的控制檯運行它,你'購買'工人動態,但Heroku每秒鐘的biling,所以你不支付,因爲你有750小時免費,月最糟糕的情況下有744小時,所以你有額外的dynos,調度任務免費6小時,所以o ñ。 – Hauleth 2012-07-25 09:59:35

13

我建議workless gem在heroku上運行延遲工作。我現在使用它 - 它對我來說完美無瑕,零成本,零成本。

我也使用hirefireapp,它對縮放工作者提供了更精細的控制度。這需要花費,但成本低於單個heroku工作人員(一個月以上)。我現在不使用它,但已經使用它,並且它工作得很好。

+0

我安裝了無工作並配置了heroku變量。我現在應該怎麼做?它似乎沒有工作。 – 2012-07-25 04:49:43

+0

你添加了配置(假設你在雪松)? config.after_initialize做 延遲:: Job.scaler =:heroku_cedar 結束 – 2012-07-26 16:39:06

+0

@DamonMannion +5你這個答案 – Kashiftufail 2013-02-21 13:32:25

0

使用heroku控制檯讓工作人員進入工作只會創建一個臨時的工作測試儀。爲了保持作業在沒有cli的情況下運行,您需要按照@Lucaksz的建議將該命令放入Procfile。

部署之後,還需要擴展到了極致形成,Heroku的需要知道有多少測功機應放置到工藝類型是這樣的: Heroku的PS:規模工= 1個

更多細節可以在這裏閱讀https://devcenter.heroku.com/articles/scaling