2

ユーザーの検索クエリの情報を収集するために、複数のサードパーティ API をヒットしようとしています。ヒットする API ごとにスレッドをスピンオフして、応答時間を最小限に抑えることを計画しています。また、メモリ/CPU の問題により、アプリケーションが一度に実行できるスレッドの量を制限したいと考えています。

フレームワークとして Laravel を使用しているため、Laravel キューを使用してこれを達成しようとしていましたが、Job からの応答データの取得に問題があるようです。

  • laravel キューはこれに取り組む正しい方法ですか? その場合、ジョブのステータスをリッスンし、ジョブが完了したらデータを取得するにはどうすればよいですか? 仕事にクロージャーを渡すことを指し示すものがいくつか見られますが、何かがうまくいきません。
4

1 に答える 1

3

場合によります。非常に膨大な数の API 呼び出しがある場合、特にそれらの API 呼び出しが非常に遅くなる可能性がある場合は、ジョブ キューとワーカー プールが適している可能性があります。ただし、本当に必要な場合を除き、そのようなアーキテクチャはすべて避けようとします。

まず、外部 API への非同期リクエストの実行を検討し、すべてを 1 つのプロセスにまとめようとしました。Guzzle HTTP クライアント ライブラリは、この種の非同期リクエストを行うための非常にプログラマーフレンドリーな API を提供します。

外部リクエストが非常に多いか遅い場合は、キューの使用を検討してください。ただし、その場合、すべてのジョブをキューに入れ、完了するまでポーリングし (途中でユーザーにフィードバックを提供)、最終的にマージされた結果を返す一連のロジックを実装することを検討しています。それが必要になるかもしれませんが、私は上記で説明したより単純な実装から始めます。

于 2016-10-31T00:59:53.990 に答える