2016-09-05 9 views
0

Phusion Passenger(バージョン5.0.7)でRails Webアプリケーションを実行しています。一部のHTTPリクエストは、スレッドプール内でバックグラウンドジョブとして実行されるワークフローをトリガします(Concurrent Ruby先物を使用します)。 Phusion Passengerがフォークサーバーであることを考えると、保留中のリクエストが処理されていなければ、ワーカープロセスが停止しないという保証はありません。これは、そのプロセスのいくつかのスレッドプールで実行されていたバックグラウンド処理を中止することができます。Rails:Rubyスレッドを使用してRails 4アプリケーションでバックグラウンドジョブを実行する

Phusion Passengerでこの作業を行う方法はありますか?あるいは、Pumaはそのようなユースケースにとってより良い選択ですか?

+0

バックグラウンド用に別のプロセスを使用してみませんか? –

+0

これを行う方法についての回答を追加してください。理由は私が質問した。 Delayed Jobs、Sidekiqなどには興味がありません。ワークフローを適切に処理する作業コードを既に持っているからです。 – CppNoob

+0

あなたのコードはサーバーの再起動も処理しますか(ジョブが失われますか?) –

答えて

0

バックグラウンドジョブを実行するためにHTTPサーバーは必要ありません。 RailsのActiveJobジョブキューを管理し、それらを処理する機能を調べてください。

+0

Sidekiq、Resqueなどの代わりにカスタム実装を使用できますか?私は、バックグラウンド処理を現在処理している十分にテストされたコードを大量に持っています。 – CppNoob

+0

さて、もちろん、既存のバックエンド実装の1つ(つまり、https://github.com/collectiveidea/delayed_job)を変更することでAPIを実装することができます。また、コンソールでコードを実行するためのレールタスクをhttp://guides.rubyonrails.org/command_line.html#rails-runnerで実行することもできます –

関連する問題