問題タブ [delayed-job]
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 - rspec で処理されない遅延ジョブ
カスタム遅延ジョブ (GetPage::GetPageJob) の rspec を実行しようとしていますが、問題があります。
それらを実行すると、ジョブは適切にエンキューされます (つまり、delayed_jobs テーブルに適切に挿入されます) が、ジョブ ワーカーによって処理されません。実際、最初のターミナルで「rake jobs:work RAILS_ENV=test」を起動した後、2 番目のターミナルでスペックを実行した後、最初のターミナルにジョブ ワーカーからの出力が表示されません。
一方、「スクリプト/コンソールテスト」を介してジョブをキューに入れると、ジョブは適切に処理されます。だから私は少し混乱しています。
仕様とスクリプト/コンソールの両方で、ジョブをキューに入れるために使用する行は次のとおりです。
何か案が ?
ruby-on-rails - Heroku での遅延ジョブ
HerokuでホストされているRailsアプリケーションがあり、毎週のデータ インポートが必要です。このタスクは管理者によって実行され、実行には約1 ~ 2 分かかります (計算時間)。Heroku では、 30 秒以上かかるジョブはタイムアウトになります。Heroku はジョブ キューを推奨していますが、8 分間の計算時間に対して月額 36.00 ドル (1 ワーカーの価格) を支払うのは適切ではないようです。いくつかの質問:
- 遅延ジョブが使用されたときにのみ料金を支払うことは可能ですか (つまり、管理者がデータ インポートをアップロードしているときにのみ遅延ジョブ サービスを起動します)。
- 遅延ジョブは必要ですか? タイムアウトがクライアントに表示されるだけなのか、実際の作業がキャンセルされたのかはわかりません。ドキュメントにはオプションとして「何もしない」が記載されていますが、これが何を意味するのかはわかりません。
ありがとう!
ruby-on-rails - DelayedJobのようなものはありますが、データベースは使用しません
バックグラウンドで何かを行うRailsでWebサイトを構築しています。データベースが必要なため、DelayedJob は使用したくありません。
私がやりたくないことは単純です: 別のサイトからデータを取得し、応答をメモリに保存し、10 分間保持します。
これを行うことができるツールはありますか?
ruby-on-rails - 「delayed_job」に関するいくつかの基本的な質問
私はdelayed_job
今しようとしていて、いくつか質問があります。
http://github.com/collectiveidea/delayed_jobページから、いくつかの情報を確認できます。
ワーカーは、データベースにアクセスでき、クロックが同期されている限り、任意のコンピューターで実行できます。各ワーカーは少なくとも 5 秒ごとにデータベースをチェックすることに注意してください。
一度呼び出すと、1 つのワーカー
rake jobs:work
が作成されますよね?ワーカーがデータベースをチェックすると、すべての新しいタスクと失敗したタスクが毎回読み込まれ、実行されますか?
ワーカーは 5 秒ごとにデータベースをチェックすると書いてありますが、2 秒にできますか?
worker(
rake jobs:work
) を作成すると、データベースには既に 10 個のタスクがあり、それぞれに 3 秒かかります。DelayedJob はいくつのプロセスを作成しますか? 合計で何秒必要ですか?
ruby-on-rails - バックグラウンドでいくつかのタスクを実行し、結果をグローバルメモリハッシュに配置するにはどうすればよいですか?
いくつかのドメインが登録されているかどうかをユーザーが確認できるRailsを使用してWebサイトを構築しています。ロジックは次のように設計されています。
- ページにテキストフィールドがあり、ユーザーはいくつかのドメイン名を入力できます
- ユーザー
check
がボタンをクリックすると、入力がサーバーに送信されます - サーバーは入力を取得し、バックグラウンドタスク(別のプロセスで実行されます)を作成し、「今すぐチェックしています...」などのテキストをすぐにユーザーに返します
- バックグラウンドタスクは、ドメイン名を別のサイトに投稿し、応答を取得し、それを解析して有用な情報を取得してから、データをグロブルメモリハッシュに配置します(タスクには3秒かかります)
- このページには「checkingnow...」が含まれており、javascript関数があり、チェック結果を取得するようサーバーに要求します。結果が出るまで2秒ごとに実行されます。
- 「ステータス確認要求」を処理するためのアクションがサーバー側にあります。Globleメモリハッシュをチェックし、結果を見つけて返します。それ以外の場合は「[]」を返します。
(私はRails 2.3.8、delayed_jobを使用しています)
私はJava開発者でした。これは、Javaで行うことです。しかし、「遅延ジョブワーカー」と「レール」はプロセスが異なるため、「グロブルメモリハッシュ」を保持するのは難しいと感じました。
私のデザインはレールでは不可能ですか?チェック結果をデータベースまたは「memcached」のようなものに保存する必要がありますか?
そして、これらのバックグラウンドタスクを並行して実行できますか?
ruby-on-rails - delayd_jobプロセスジョブ後のコールバック
delayed_job
モデルのタスクを処理した後、モデルを更新する必要があります。例:
foo.delay.something
完了しsomething
たら、fooオブジェクトを更新する必要があります。これを実現するための最良の方法は何ですか?クラスでコールバックをコーディングすることを考えていましたDelayed::Backend::ActiveRecord::Job
が、これを行うにはもっとクリーンでより良いものがあるはずです。
ruby-on-rails - バックグラウンドジョブとafter_saveコールバック
私はVoteというモデルを持っていますが、これは非常に頻繁に変更されます(人々が投票する)。投票が保存された後、投票者が男性/女性かどうか、年齢などを補間するなど、他の分析を行います。これにより、同じモデルのカウンター(大人の投票、女性の投票など)が更新されます。
保存処理後にこれを行うための最良の方法は何でしょうか、これはバックグラウンドジョブ(delayed_jobプラグインを使用します)にするべきですか、それともafter_saveコールバックとして残すのが最善ですか?パフォーマンスの観点からもどちらが優れていますか?
ユーザーに2番目に新しいデータを表示する必要はありません(after_saveコールバックでさえそれを達成しません)。
ありがとう
ruby-on-rails - Railsを起動せずにDelajed Jobsでタスクを繰り返しますか?
遅延ジョブで繰り返しタスクを作成する必要がある場合、クリーンなソリューションは何ですか? 5 分ごとに実行したいインポート タスクがありますが、ピックアップできる遅延ジョブを作成するように指示するためにレール/レーキを起動したくありません。システムで Rails が既に実行されている場合、Rails アプリに DJ を起動させる HTTP リクエストを作成するだけでよいでしょうか? その cron タスクを 5 分ごとに実行される Ruby スクリプトに配置して、サーバーにリクエストを送信することができましたが、レールを起動する必要はありませんでした。どう思いますか?
jruby - jruby用のdelayed_jobのようなgemはありますか?
Railsアプリをjruby on railsに変換しようとしています。現在、次のようにjruby script/delayed_job run
なります。
jrubyのdelayed_jobのようなgemはありますか?
ruby-on-rails - Delayed_jobでジョブを手動で再試行します
Delayed :: Jobの自動再試行機能は素晴らしいですが、今すぐ手動で再試行したいジョブがあります。仕事自体で呼び出すことができるメソッドはありますか...
または実行、または何か。私はいくつかのことを試し、ドキュメントをまとめましたが、ジョブの手動再試行を実行する方法を理解できませんでした。