問題タブ [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.
mysql - User.all はローカルで 5 ~ 10 分かかります。それぞれを反復するための要求タイムアウト
ユーザーのデータベースに 233_997 レコードがあります。これを反復するのに 10 分以上かかります。ジョブを sidekiq に送信するには、それぞれを実行する必要があります。サーバーは、各ユーザーのジョブを作成する前にタイムアウトします。私は何をしますか?
サーバーをタイムアウトさせずにこのリクエストを通過させるにはどうすればよいですか? 非常に遅いのは User.find_each 部分です...しかし、200k レコードではそれが正常なのかもしれません。
ruby - Sidekiqワーカーの異なるログレベル - Rubyアプローチ?
Railsアプリケーション、Sidekiq、およびスケジューリング用のクロックワークmodを備えた実行環境があります。
私は logger.debug と logger.info の命令で満たされた多くの異なるワーカーを持っており、何が起こっているのかを知るために、それらのいくつかでデバッグ ログをアクティブにする必要がある場合があります。私はSidekiqロガーが好きで、仕事をするためにワーカーで「logger.debug」命令が必要なだけなので、それを利用したいと思っています.
現在のセットアップで見逃しているのは、一部のワーカーの DEBUG レベルを有効にし、他のワーカーを標準の INFO のままにしておく可能性です。
今、私の各ワーカーには、次の初期化メソッドがあります。
ただし、1 つのワーカーのレベルを変更すると、このレベルは次のワーカーで指定されたレベルで上書きされます。たとえば、2 つのワーカーが一緒に処理された場合、2 番目のワーカーが「優先」されます。
これをエレガントな方法で達成する最良の方法は何ですか?
Javaの世界から来て、カスタムロガーを作成して各ワーカーに配置し、Sidekiqロガーで使用される出力形式をコピーし、各ワーカーにロガーメソッドを追加することしか考えられません
初期化メソッドで必要なときにレベルを変更する
これはRubyでの最良のアプローチですか?
ruby-on-rails - sidekiqで多くの重複ジョブのうちの1つだけを実行しますか?
MongoDBでmap/reduceジョブを実行するバックグラウンドジョブがあります。ユーザーがドキュメントにさらにデータを送信すると、ドキュメントで実行されているバックグラウンドジョブが開始されます。ユーザーが複数のリクエストを送信すると、同じドキュメントに対して複数のバックグラウンドジョブが開始されますが、実際に実行する必要があるのは1つだけです。複数の重複インスタンスを防ぐ方法はありますか?ドキュメントごとにキューを作成し、新しいジョブを送信する前にキューが空であることを確認することを考えていました。または、ドキュメントIDと同じジョブIDを設定し、送信する前に何も存在しないことを確認できますか?
また、sidekiq-unique-jobsの宝石を見つけました。しかし、ドキュメントは存在しません。これは私が望むことをしますか?
ruby-on-rails - sidekiqで2つの別々のredisインスタンスを操作しますか?
こんにちは、
私は2つの別々の、しかし関連するアプリを持っています。両方とも独自のバックグラウンドキューを持っている必要があります(個別のSidekiqおよびRedisプロセスを参照)。app2
ただし、ときどきからのキューにジョブをプッシュできるようにしたいと思いますapp1
。
単純なキュー/プッシュの観点から、app1
既存のSidekiq/Redisスタックがない場合はこれを簡単に行うことができます。
しかし、私がすでにaSidekiq.configure_client
とSidekiq.configure_server
fromを呼んでいたことを考えるとapp1
、おそらくここの間に何かが起こる必要があるステップがあります。
明らかに、Sidekiqの内部からシリアル化と正規化のコードを直接取得し、手動でapp2
のredisキューにプッシュすることもできますが、それは脆弱な解決策のようです。機能を利用できるようにしたいと思いClient.push
ます。
私の理想的な解決策は次のようなものだと思います。
SidekiqTWO.configure_client { remote connection..... }
SidekiqTWO::Client.push(job....)
あるいは:
$redis_remote = remote_connection.....
Sidekiq::Client.push(job, $redis_remote)
明らかに少し面白味がありますが、それが私の理想的なユースケースです。
ありがとう!
ruby-on-rails - 本番環境での Redis + Sidekiq の構成
Passenger/Rails 本番環境でRedis + Sidekiqをセットアップしようとしていますが、混乱が生じています。
サーバーには、多数の小さなアプリが実行されています。これらのアプリの 1 つ以上が Sidekiq によって提供される遅延処理を利用すると確信しています。
私が最初に考えたのは、Sidekiq の名前空間オプションnamespace
を使用して、Rails アプリごとに を作成することでした。
databases 16
しかし、その後、私は設定に気付きredis.conf
、正確には何をしているのか疑問に思っています. 設定のコメント以外にドキュメントが見つからないようです:
では、16 個の「データベース」のデフォルト/例は、あるアプリに DB0 を使用し、別のアプリに DB1 を使用できることを意味するのでしょうか?!? この仮定は正しいとは思いませんが、以下以外の情報は見つかりません。
Redis クラスターは、スタンドアロン バージョンの Redis のような複数のデータベースをサポートしていません。データベース 0 だけがあり、SELECT は許可されていません。
同じサーバーで実行されているさまざまな Rails アプリケーション間で Sidekiq と Redis を共有する方法について誰かがアドバイスしてくれることを願っています。
ruby-on-rails - Rails: IP アドレス (または範囲?) に基づいてルートを制限することが可能
config/routes.rb
これは通常コントローラーで発生することは知っていますが、特定の IP (または IP の範囲) に基づいてルートを制限できるかどうか疑問に思っています。ある種のホワイトリストのようなものです。
たとえば、このルートをサブネット上の IP のみに制限したいと思います。
ruby-on-rails - gem 内でワーカーを定義する場所
私は宝石を書いています。gem の API への呼び出しで、一部の Sidekiq ワーカーへの呼び出しをトリガーしたいと考えています。これらのワーカーを gem 内のどこに記述すれば、「app/workers」になくても Sidekiq が見つけられるようになりますか?
ruby-on-rails - SidekiqがDBで要素を見つけられない
私のアプリケーションには、基本的に次のように動作する Sidekiq ワーカーがあります。
問題は、このevents.any? 戻っfalse
てはならないときに戻ってきます。SetResultsWorker.new.perform
ワーカーを同期的に実行する場合 ( )、すべてが正常に動作するため、スコープの問題ではありません。何か案は?
編集: 詳細情報。このワーカーは、デーモンによって定期的に実行されます。最初の実行は問題ありませんが、その後は機能しなくなります。
sidekiq - ターミナルで開始したsidekiqプロセスを切り離す方法
本番サーバーでsidekiqを実行したいのですが、このコマンドを使用してプロセスを開始しています
サーバーへの接続を閉じることができるように、プロセスを停止せずにプロセスから切り離すにはどうすればよいですか。
resque - 静止したSidekiqまたはResqueキューの通知
SidekiqまたはResqueキューが移動していないときに通知を受信する簡単な方法はありますか?
ワーカーがランダムに死亡し、キューが静止してしまうという問題が発生しています。死にゆく労働者の問題の解決に取り組んでいる間、私たちは行き詰まった仕事に対するサポートの呼びかけを先取りしたいと思っています。