問題タブ [sidekiq]
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 - Sidekiq を複数の環境にデプロイする
(Henley Chiuの回答の結果である私の詳細な設定については、以下を参照してください)。
Sidekiq の展開について頭を悩ませようとしてきましたが、実際には理解できません。同じサーバー上に、ステージング環境と運用環境を備えたアプリがあります。sidekiq deploy について私が目にするものはすべて、基本的に「sidekiq/capistrano をデプロイ ファイルに追加するだけ」と言うので、そうしました。そして、指示は「オプション付きのymlファイルです」ですが、何も説明されていないようです。名前空間は必要ですか? 初期化ファイルでそれを見ますが、それはサーバーの外を指しているようです。
以前にデプロイしたところ、各ステージは適切な環境で sidekiq を起動しているように見えますが、どちらも同じキューから処理されます。プロダクションからのメールがステージの sidekiq によって処理されようとして失敗しました。今はステージを停止していますが、最終的には再び使用する必要があります。私は密集していないことを願っています.
価値のあるものとして、ここに config/sidekiq.yml があります (デプロイ中に正常にロードされます):
ログ ファイルと pid は適切な場所にあるように見えますが、キューはマージされているだけです。どんな助けでも素晴らしいでしょう!
また、重要な場合:
詳細な構成 (回答):
最初に、ポート 7777 (またはデフォルトの 6379 以外の任意のポート) で新しい redis サーバーをセットアップします。私が最初に使用したredis クイックスタート ガイドにほぼ従っています。
次に、初期化ファイルを作成しました。これには、クライアント構成とサーバー構成の両方があります。sidekiq をマルチステージで動作させるには、両方が必要です。
設定に外部 YAML ファイルを使用していることに注意してください。私はこれを簡単にするためにSettingsLogicを使用していますが、ファイルを含めることで自分で同じように簡単に行うことができます。yaml ファイルを使用することで、環境/ステージング ファイルまたは運用ファイルに触れる必要がなくなります。
私はパッセンジャーを使用しています - sidekiq wiki のトラブルシューティング ページでは、ユニコーンまたはパッセンジャーを使用する場合のセットアップの変更を推奨しているため、クライアント セットアップ用のコードをそこに追加しました。
これは私の設定ファイルです(明らかに値が変更されています):
名前空間を config/sidekiq.yml ファイルに追加してもうまくいかないことがわかりました。sidekiq は適切なポートを使用してデプロイ時に起動しますが、実際には何も処理しません。しかし、ウィキは名前空間の使用を推奨しているため、初期化ファイルに追加するだけになりました。
以前にこの種のセットアップをあまり行ったことがなかったので、これを理解するのが本当に難しかったので、これが他の人に役立つことを願っています.
ruby-on-rails - ActiveRecord クエリを改善する方法
クエリの結果を返すメソッドがあります。メソッドを呼び出すコードは、各結果をループし、sidekiq ワーカーを起動します。私が直面している問題は、ループに実際にかなりの時間がかかっていることです (すべてのワーカーを実行するのにかかる時間とほぼ同じです)。クエリは次のとおりです。
次に、次のことを行います。
このプロセスをより効率的にする方法を見つけようとしています。その結果、このプロセスが完了するまでに約 10 分かかり、実質的に起動ごとに 20 ミリ秒かかります (クエリが 30,000 件の結果を返す場合)。これを速くする方法はありますか?
ruby-on-rails - エラー 10068 で失敗しました:「無効な演算子: $oid」
mongoid (3.1.0) と sidekiq (2.7.2) の最新バージョンに更新したところ
、エラーが発生しましfailed with error 10068: "invalid operator: $oid"
た: コードを調べると、そのような選択が表示されます:@selector={"_id"=>{"$oid"=>"[some id]"}}
ここで何が問題なのですか?
ruby-on-rails-3.2 - プールサイズの設定を無視するsidekiq
何を試しても、Sidekiq に最大プール サイズの設定を反映させることができないようです。私はもう試した:
- データベースにプールを設定する:
- 私のsidekiqイニシャライザでそれをハードコーディングします(切断の有無にかかわらず!そしてconfigure serverブロックの内側と外側の両方):
- DATABASE_URL 環境変数を使用して設定します (そして、はい、 https://github.com/glenngillen/rails-database-urlを使用して DATABASE_URL が設定されていることを確認しました):
これらのどれも機能しなかった理由がわかりません。何か案は?
関連する場合:
- レール3.2.12
- サイドキク 2.6.4
ruby - Sidekiqで特定の期間ワーカーを実行する方法は?
タイムゾーンに依存するコードを含むレールアプリを作成しています。
私のSidekiqワーカーを、タイムゾーンの日中のみ、つまり毎日一定の時間だけ動作させるにはどうすればよいですか。
キューが空でない場合でも、ワーカーは特定の時点 (1 日の終わり) に一時停止し、翌日再開する必要があります。
ruby-on-rails - carrierwave_backgrounderモデルに関する統合テストを作成するための最良の方法は何ですか?
バックグラウンドでドキュメントをアップロードするRailsモデルを中心に統合テストを作成しようとしています。私はcarrierwave_backgroundergemとsidekiqを使用しています。コード自体はすべて期待どおりに稼働していますが、その周りで統合テストを作成するのに最適な方法を見つけるのに苦労しています。require 'sidekiq/testing/inline'
ファイル内に追加しようとしましspec_helper
たが、モデルを保存した後、アップロードされたドキュメントは次のステップでまだnilになっています。私はその周りのものをスタブすることができますが、ベストプラクティスは統合仕様でそれを行わないことのようです。ファイルのアップロード中およびその後も、動作をテストできると便利です。これを処理するための最善の方法に関する提案はありますか?
ruby-on-rails - Sidekiqワーカーにdefault_url_optionsを設定するにはどうすればよいですか?
私には、社会的行動を実行することを目的としたSidekiqワーカーがいます(例:Facebookのページなど)。この一部では、高く評価されているオブジェクトのURLを知っている必要があります。
Rails.application.routes.url_helpers
幸い、Rails 3では、パス/ URLヘルパーメソッドへのアクセスが必要なクラスまたはモジュールに含めることで、アプリ固有のルートに簡単にアクセスできます。
私が遭遇している問題は、私のdevelopment.rb
またはでそれらを定義しようとするさまざまな試みにもかかわらず、私のデフォルトのURL/ポートに私のSidekiqワーカー内からアクセスできないことproduction.rb
です。
recipe_url
メソッドがアクセスの場合、ArgumentError
次のメッセージが表示されます。
ArgumentError:リンクするホストがありません!:hostパラメーターを指定するか、default_url_options [:host]を設定するか、:only_pathをtrueに設定してください
default_url_options
環境固有の構成ファイルに、ActionController
または環境固有の構成ファイルで指定できることを知っていActionMailer
ます。例:
ただし、これらは(当然のことながら)私のSidekiqワーカークラスには影響を与えないようです。default_url_options
これらのクラスをどのように定義すればよいですか?
ruby - gemによって追加されたメソッドの名前を変更します
Sidekiqgemによって追加されたメソッドdelay
の名前をに変更したいと思います。この拡張メソッドは、Rubyのすべてのクラスに追加されます。これを行うためにRubyメタプログラミングをどのように使用できますか?sidekiq_delay
delay
SidekiqがDelayJobのメソッドを上書きしないようにこれを実行したいと思いますdelay
。
ruby-on-rails-3 - redis の ECONNREFUSED どうすればいいですか?
私はこれに何日も取り組んできましたが、何が悪いのかわかりません。
他のすべては機能していますが、redis で「ECONNREFUSED」が表示されます。次のインスタンスを実行しています:
productionlog からのエラーは次のとおりです。
すべてラバージェムを使用して設定されています。
すべてのインスタンスを削除して、最初から2回開始しようとしました。また、カスタム セキュリティ ルールを作成しようとしましたが、正しく作成したかどうかはわかりません。
私を助けてください!