いくつかの.jsスクリプトがありますが、同じHerokuアプリでそれらをすべて同時に実行する方法はありますか?
私folder
はこのように見えます:
**MAIN_FOLDER**
Procfile
script1.js
script2.js
script3.js
script4.js
script5.js
script6.js
script7.js
script8.js
script9.js
私のProcfile
:
worker: node script1.js
worker: node script2.js
...
worker: node script8.js
worker: node script9.js
そして私のpackage.json
:
"scripts": {
"script1": "node script1.js",
"script2": "node script2.js",
"script3": "node script3.js",
"script4": "node script4.js",
"script5": "node script5.js",
"script6": "node script6.js",
"script7": "node script7.js",
"script8": "node script8.js",
"script9": "node script9.js",
"start": "npm-run-all --parallel script1 script2 script3 script4 script5 script6 script7 script8 script9"
}
ここにはいくつかの問題があります。まず、各ノードスクリプトを別々のHeroku dynoで実行しますか、それとも1つのdynoでノードスクリプトを並行して実行するだけで十分ですか?
1つのdynoで十分な場合は、Procfileを次のように変更する必要があると思います。
worker: npm start
(「npmstart」スクリプトで使用しているnpm-run-allがpackage.json依存関係に表示されると想定しています。そうでない場合は、機能しません)。
また、アプリにWebダイナモが必要ないようです(つまり、着信HTTP / Sトラフィックを処理していません)。その場合は、のようなものでアプリのフォーメーションを明示的にスケーリングする必要がありますheroku scale web=0 worker=1
。
実際にワーカーダイノを「常にオン」にする必要がある場合にのみ、これを行う必要があることに注意してください。ただし、スクリプトで何らかの作業を行ってから終了するだけでよい場合は、代わりに1回限りのdynoを使用する必要があります。その場合、heroku scale
ワーカーを0に設定すると、コマンドラインから。を使用して1回限りのダイナモとして起動できますheroku run worker
。
ただし、ノードスクリプトを異なるdynoインスタンスで並行して実行することを目的としている場合は、まず、Dynoのスケーリング制限に注意する必要があります。「フリーダイナモタイプを使用するアプリケーションは、最大2つの同時実行ダイナモに制限されている」ことに注意してください。これにより、フリーダイナモと並行して9つのダイナモを実行できなくなるようです。1回限りのdynoを使用すると、わずかに多くの無料の同時dynoを取得できますが、それでも9つの同時ノードスクリプトを実行するには十分ではありません。
有料のdynoを使用している場合、必要なことを行う1つの方法は、Procfileを次のように変更することです。
worker1: node script1.js
worker2: node script2.js
...
worker8: node script8.js
worker9: node script9.js
次に、を使用heroku scale
して各worker*
プロセスタイプを1にスケーリングします。
ただし、9ノードのスクリプトを「常にオン」にする必要がある場合にのみ実行する必要があることに注意してください。スクリプトが単に何らかの作業を行ってから終了する必要がある場合は、代わりに1回限りのdynoを使用する必要があります。それ以外の場合は、未使用のリソースの多くを支払うことになります!! その場合、を使用heroku scale
してすべてのworker*
プロセスタイプを0にスケーリングし、コマンドラインから9つのスクリプトを起動して、次のようなものと並行して個別の1回限りのdynoで実行できます。
heroku run worker1 &
heroku run worker2 &
...
heroku run worker9 &
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加