2017-06-22 244 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. 智能根的工作。

祝你好运。