問題タブ [kue]
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.
node.js - Kue を使用する Node.js アプリケーションのテスト
各テストの前にジョブ キューが空になり、各テストの後にクリアされるように、 Kueを使用するアプリケーションをテストしたいと思います。キューは完全に機能する必要があり、既にキューにあるジョブのステータスを確認できる必要があります。
mock-kueを試してみたところ、キューからジョブを取得して分析するまでうまくいきました。ジョブ ID でジョブを返すことができませんでした。
テストできるようにする必要がある状況:
- 何かが起こり、特定のタイプのジョブがキューにあるはずです。
- 何かが起こり、仕事が生まれます。何か他のことが起こり、そのジョブは削除され、別のジョブ (再スケジュールまたは既存のジョブ) に置き換えられます。
継ぎ目は簡単ですが、問題に頭を悩ませるのに苦労しています。すべてのポインタを歓迎します。
node.js - nodejs Kue を使用した条件付き試行
1 つの Web クローラー アプリケーションでkueを使用しています。attempts
エラーが特定の条件に一致する場合に、特定の失敗したジョブを設定したい。たとえば、エラーの原因がソケットのハングアップである場合、ジョブは 1 分間隔で 3 回再試行します。
私のコードは以下のようなものですが、動作しません
javascript - createClientFactory を使用した Kue ワーカー: サブスクライバー コマンドのみを使用できます
私は、kue ワーカーをセットアップする作業を行っており、奇妙なことを発見しました。デフォルトの kue redis 接続を使用してキューを作成すると、すべてが完全に機能します。
ワーカーは完全に起動します。ただし、デフォルトの redis 接続を自分のものでオーバーライドしようとすると、
エラー: サブスクライバー モードでの接続です。サブスクライバー コマンドのみを使用できます
実行が以下の q.process 関数にヒットしたとき:
意味がないようです。古典的な非同期エラーを犯しているのかもしれないと思ったのですが、以下でも同じエラーが発生しました。 洞察はありますか?
node.js - node.js での外部 API 呼び出しにはワーカー プロセスが必要ですか?
Rails のような「ブロッキング」サーバー アーキテクチャでは、時間のかかる外部 API 呼び出しをワーカー プロセス (つまり、ジョブ キュー) にオフロードして、サーバー プロセスがブロックされないようにする必要があることを私は知っています。
これはnode.jsにも当てはまりますか? それとも、その「ノンブロッキング」アーキテクチャは、後続のサーバー要求を拒否したり遅くしたりすることなく、進行中の不完全な外部 API 呼び出しを持つことができることを意味しますか?
kue - クエで同じジョブが繰り返されるのはなぜですか?
私はmongodbの一連のレコードをループして、いくつかの処理のためにそれらをkueに入れています。実際には適用されないように見えるので、ここにすべてのコードを入れませんが、次のようなことをします:
この場合、ループでキューを作成しないなど、してはいけないことがあれば指摘してください。とにかく、console.log を実行すると、次のようなものが得られます。
これは私が期待するものです。
しかし、次のことを行うと、ウォッチャーで:
私は以下を取得します:
何度も何度も。いつもそのレコードだけです。これは、私には見えない非同期状況があること、またはこれが実際に保存した最後のジョブであることを考えると、kue がどのように機能するかを完全に誤解していることを意味します。ここでの私の主な問題は、おそらく私が resque のやり方に慣れていることです。これは少しずれているようです。
node.js - Sinon スタブ連鎖メソッド
SailsJs コントローラーに次のコードがあります。
そして、私のテストでは、次のJobs
ようにスタブしようとしています:
ただし、私のテストは 2000 ミリ秒後にタイムアウトし、失敗します。
これらのメソッドをスタブ化してテストに合格するにはどうすればよいですか?
node.js - クライアントからのキュージョブ進捗
Kueでジョブを処理するバックグラウンドワーカーでherokuアプリを実行しています。heroku は 30 秒以上かかるすべてのリクエストを終了して再起動するため、jobs.create()
(終了する前に) クライアントに応答を返すことになりました。
これらのジョブの一部は完了するまでに数分かかるため、クライアントから進行状況を確認するにはどうすればよいでしょうか?
これまでのところ、私が見ることができる最善の解決策は、ジョブIDをクライアントに送り返し、x秒ごとにジョブの進行状況を確認することです: