2017-06-22 248 views
1

n秒的時間內發送http請求到外部API的最佳方式是什麼?每個請求後n正在更改。在我的Rails應用程序中每隔n秒發送一次http請求

我有inifinite循環計算時間間隔併發送http請求,但我不知道在Rails應用程序中使用它的最佳方式是什麼。

我雖然sidekiq將是完美的解決方案。在鏈接作業中,作業將發送請求,計算時間間隔並使用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. 創建一個異步工作

  2. 工作完成後隊列同樣的工作,並要求Sidekiq等待一段時間。 SMSDelegationJob.perform_later(wait: 10.seconds)

  3. 別忘了要養成良好的邏輯異常處理

  4. 不要忘記手動或通過控制檯設置較低的輪詢間隔

  5. 智能根的工作。

祝你好運。