問題タブ [backgroundrb]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - Backgroundrb スケジュールされたタスクの終了
実行にかなり時間がかかる backroundrb スケジュール タスクがあります。ただし、プロセスはわずか 2.5 分後に終了しているようです。
私の background.yml ファイル:
プロセスの実行中、サーバー上でアクティビティがありません。(つまり、プロセスが突然停止するまで、サーバー上でログ ファイルの処理を監視しているのは私だけです。)
何か案は?
ruby-on-rails - Railsアプリケーション内でDRbサービスを初期化する正しい場所はどこですか?
Railsアプリケーション内でDRbを使用して、Railsプロセスの外部で高価なタスクをオフロードしています。DRbObject.newを使用してクライアントスタブを初期化する前に、DRb.start_serviceを使用してDRbサービスを初期化する必要があります。
モデルまたはコントローラーでこれを行うと、スレッドが不確実な状態のままになるように見えます。私が雑種を出るとき、それは言います:
Reaping 1 threads for slow workers because of 'shutdown'
Waiting for 1 requests to finish, could take 60 seconds.
environment.rbでサービスを初期化することは、大きな注意点でうまく機能しているようです。私は、一部のRailsワーカーでもbackgroundrbを使用しています。それらが初期化されると、environment.rbが実行され、二重初期化による問題が再び発生します。
クライアントでDRb.start_serviceを呼び出す正しい場所はどこですか?または、同じプロセスで2回実行することを回避できるように、初期化をテストする方法はありますか?
ruby-on-rails - backgroundrb thread_pool.deferメソッドロガーの出力はどこに行きますか?
スレッドの問題が原因のようですlogger.warn(私がテストしたもの)は出力を生成しませんか?私のコードはこれに似ています:
何か案が?
ruby-on-rails - 毎分実行されるメーラーに最適な Rails ソリューション
その時点で送信されるはずの電子メールを毎分データベースでチェックするアプリケーションがあります。これを、毎分 cron ジョブによって実行される rake タスクにすることを考えていました。これに対するより良い解決策はありますか?
私が読んだことから、これは理想的ではありません。なぜなら、レーキは毎分レール環境全体をロードする必要があり、これは高価になるからです。
考え?
ありがとう。
ruby-on-rails - Rake タスクをコーディングして BackgrounDRb タスクをトリガーするにはどうすればよいですか?
15 分ごとに「sync」メソッドを実行するように BackgrounDRb ワーカーをセットアップしました。次に、たとえば、メソッドを今一度実行したいとします。私は次のようにレーキタスクでそれをラップしようとしていました:
しかし、これはうまくいきません。あらゆる種類の未定義の定数などで救済されます。私の試みはどれもその他を要求しません。gems は、実行可能な rake タスクを生成しました。:(
では、問題は、rake タスク内から BackgrounDRb タスクをどのようにトリガーするかということです。
ruby-on-rails - backgroundrb が同じタスクの複数のコピーを開始しないようにするにはどうすればよいですか?
たとえば、backgroundrb の cron スケジューリング機能を使用して 15 分ごとに実行するように設定されたワーカーがあるとします。次に、たとえば、ワーカーの 1 つのインスタンスの実行に 15 分以上かかる場合、backgroundrb によって 2 番目のワーカーが並行して開始されることは望ましくありません。どうすればそれを達成できますか?
ruby-on-rails - BackgroundRB がクラッシュした場合にキャンセルされた (取得された) ジョブを回復する方法は?
問題: Rails アプリから BackgroundRB で数秒から数分実行されるジョブがあります。しかし、タスクの実行中に新しいコードをデプロイして BackgroundRB を再起動するとどうなるでしょうか? BackgroundRB は「取られた」タスクを取得していないようで、これらのタスクを回復できるものを見つけることができませんでした。
backgroundrb がダウンしたときに実行されていたタスクを回復するために BackgroundRB が提供するかどうか、またどのように提供するかを誰か教えてもらえますか?
この質問をする理由は、ジョブの最後に、任意の時点で新しいジョブが将来キューに入れられるためです。
ruby-on-rails - プロセスのバックグラウンド化に Kernel#fork を使用する、プロ? 短所?
Rails アプリからのプロセスを「バックグラウンド」にするために fork{} を使用するのが良いアイデアかどうかについて、いくつか考えてみたいと思います...
私が集めたものから fork{my_method; Process#setsid} は、実際に本来の機能を果たします。
1) 異なる PID を持つ別のプロセスを作成します
2) 呼び出しプロセスを中断しません (たとえば、フォークの終了を待たずに続行します)。
3) 終了するまで子を実行します
..これはクールですが、それは良い考えですか? フォークは正確に何をしているのですか?Rails mongrel/passenger インスタンス全体の複製インスタンスがメモリ内に作成されますか? もしそうなら、それは非常に悪いでしょう。それとも、大量のメモリを消費することなく、どうにかしてそれを行うのでしょうか。
私の最終的な目標は、バックグラウンドのデーモン/キュー システムを廃止して、これらのプロセス (主に電子メールの送信) をフォークすることでした。しかし、これでメモリが節約されない場合は、間違いなく間違った方向への一歩です。
ruby-on-rails - Rails backgroundRBプラグインは、それをスケジュールし、永続性のためにデータベースにキューイングする必要があります
私は次のことをしようとしています:
- 15分ごとにワーカーとその中のメソッドを実行します
- データベーステーブルbdrd_job_queueに、最後の実行時のジョブのログを記録します。
私がしたこと:
backgroundRB.ymlファイルに15分ごとのスケジュールがあります
メソッド呼び出しには呼び出しがありますが、オブジェクトがnilpersistent_job.finish!
であるため、機能していません。persistent_job
DBにログインしているが、backgroundRB.ymlから自動的にスケジュールされていることを確認するにはどうすればよいですか?
ruby-on-rails - テスト中に一部の BackgroundRb ワーカーを無効にすることはできますか?
メールの送信を担当する BackgroundRb ワーカーがいます。
テスト中にこのワーカーを実行しないようにするにはどうすればよいですか? フレームワークには、使用できる構成パラメーターまたはスタブ ワーカーが含まれていますか?