16

だから今、私のローカル開発環境で完璧に動作するdelayed_jobの実装があります。私のマシンでワーカーを開始するには、実行するだけでrake jobs:work完全に機能します。

delayed_job を heroku で動作させるために、私はほとんど同じコマンドを使用してきました: heroku run rake jobs:work. このソリューションは、Heroku にワーカーのコストを支払う必要なく機能しますが、コマンド プロンプト ウィンドウを開いたままにしておく必要があります。コマンド ウィンドウを閉じても、このdelayed_jobワーカーを永続的に動作させ続けるコマンドはありますか? または、これについて別のより良い方法はありますか?

4

4 に答える 4

13

heroku で遅延ジョブを実行するには workless gemをお勧めします。私は今これを使用しています - それは私にとって完璧に機能し、手間も費用もかかりません。

また、ワーカーのスケーリングをより細かく制御できるように、hirefireappも使用しました。これには費用がかかりますが、1 人の heroku ワーカーよりも費用がかかりません (1 か月以上)。今は使っていませんが、使ったことはありますが、とてもよく効きました。

于 2012-07-25T04:42:50.047 に答える
9

追加

worker: rake jobs:work

あなたにProcfile

編集:

コンソールから実行した場合でも、ワーカーdynoを「購入」しますが、Herokuでは1秒あたりのバイリングが発生します。つまり、750時間の空き時間があるため、料金は発生しません。最悪の場合、月は744時間なので、追加のdynoやスケジューラタスクなどに6時間無料で利用できます。

于 2012-07-24T10:31:40.440 に答える
1

個人的にはまだ試していませんが、nohup役に立つかもしれません。端末ウィンドウを閉じていても、プロセスを実行できます。リンク: http://linux.101hacks.com/unix/nohup-command/

于 2012-07-24T10:29:02.780 に答える
0

heroku コンソールを使用してワーカーをジョブに投入すると、ジョブの一時的な dyno が作成されるだけです。cli なしでジョブを実行し続けるには、@Lucaksz が提案したように、コマンドを Procfile に入れる必要があります。

デプロイ後、dyno フォーメーションをスケーリングする必要もあります。heroku は、次のようにプロセス タイプにいくつの dyno を配置する必要があるかを知る必要があるためです: heroku ps:scale worker=1

詳細については、https://devcenter.heroku.com/articles/scalingをご覧ください。

于 2016-09-21T02:01:05.583 に答える