2017-06-22 11 views
1

外部apiにhttpリクエストを送信する最善の方法はどれですか?n秒ですか?リクエストごとにnが変更されています。Railsアプリケーションでn秒ごとにHTTPリクエストを送信する

私は、時間間隔を計算してHTTPリクエストを送信するinifiniteループを持っていますが、Railsアプリケーションで何が最良の方法であるかわかりません。

サイドキックは完璧な解決策ですがジョブが要求を送信する連鎖ジョブでは、時間間隔を計算し、set(wait: n)で別のジョブをスケジュールします。しかし、Sidekiqがポーリング間隔を持ち、set(wait: n)が正確にn秒の要求を実行していないようです。

どうすればこのようにしますか?

+0

なぜあなたはそれをしたいですか? – spickermann

答えて

0

最後のものがどれくらいの時間を要したかにかかわらず、要求が完了するまでのn秒(つまり、最後のものが完了した時刻から次の時刻が始まる時刻まで)か、n秒ごとに開始する必要がありますか? )?

(同時実行のいくつかのフォームを使用して)要求を並行して行う必要があるかどうかを教えてくださいその質問に答えるか、あなたは、単一の長期的なプロセスからそれを行うだけのことができるかどうか。

+0

これは並列に実行することはできません、私はAPIからの応答に基づいて間隔を計算します。 –

+1

どのようにちょうどそのRubyスクリプト内のループを使用してはどうですか?レーキの仕事でもあります。 –

0

あなたはSidekiqについて完全に正しいです。私が考える最高の解決策になるでしょう。ポーリング間隔はaverage_scheduled_poll_intervalで設定できます。 Here there are documentation

はそう:

  1. をジョブがキューに同じジョブを完了し、いくつかの時間を待つようにSidekiqを依頼された後、非同期ジョブ

  2. を作成します。 SMSDelegationJob.perform_later(wait: 10.seconds)

  3. 手動またはコンソールを介して低ポーリング間隔に

  4. スマートルートジョブを設定することを忘れないでください

  5. の例外処理のための良いロジックを開発することを忘れないでください。

幸いです。

関連する問題