私は Heroku プラットフォームのメモリ制限を認識しており、アプリを Web とワーカー dyno に分離する方がはるかにスケーラブルであることを知っています。ただし、テスト目的で Web プロセスと並行して非同期タスクを実行したいと考えています。Dyno はコストがかかるので、Heroku が提供する無料のインスタンスでプロトタイプを作成したいと考えています。
Web プロセスと同じ dyno 内のプロセスまたはサブプロセスとして新しいジョブを生成することに問題はありますか?
私は Heroku プラットフォームのメモリ制限を認識しており、アプリを Web とワーカー dyno に分離する方がはるかにスケーラブルであることを知っています。ただし、テスト目的で Web プロセスと並行して非同期タスクを実行したいと考えています。Dyno はコストがかかるので、Heroku が提供する無料のインスタンスでプロトタイプを作成したいと考えています。
Web プロセスと同じ dyno 内のプロセスまたはサブプロセスとして新しいジョブを生成することに問題はありますか?
新しい Cedar スタックでは、複数のプロセスを生成しても問題はありません。各 dyno は仮想マシンであり、メモリと CPU の使用量 (約 512 MB のメモリと 1 つの CPU コア) を除いて、特に制限はありません。Python などの一部のスタックの新しいインストール手順に従うと、すぐに使用できる複数の (Web サーバー) プロセスで構成されます。
Web dyno にインストールされるソフトウェアは、使用しているビルドパックによって異なる場合があります。サブプロセスに特別なソフトウェアが必要な場合は、それをアプリケーションにバンドルするか、(より良い) 独自のビルドパックを展開する必要があります。
この時点で、適切なタスク キュー システムを使用して、Web dyno の代わりにワーカー dyno で非同期タスクを実行することを強くお勧めしますが、既にご存知のようです。Web dyno が 1 つしかないアカウント (通常、これは「無料」アカウントを意味します) では、1 時間ほど Web リクエストを受信しないとその dyno がスピンダウンし、その時点で dyno でバックグラウンド プロセスが実行されていることに注意してください。時間は必然的に殺されます。複数の Web dyno を持つアカウントは、この制限の対象ではありません。