在我的Rails应用

时间:2017-06-22 19:58:31

标签: ruby-on-rails ruby

每隔n秒发送http请求到外部api的最佳方法是什么?每次请求后n正在发生变化的地方。

我有无限循环计算时间间隔并发送http请求,但我不知道在Rails应用程序中使用它的最佳方法是什么。

我虽然sidekiq将是完美的解决方案。对于链接的作业,作业将发送请求,计算时间间隔并使用set(wait: n)计划另一个作业。但看起来Sidekiq有轮询间隔,set(wait: n)没有在n秒内完成请求。

你会怎么做这样的事?

2 个答案:

答案 0 :(得分:0)

是请求之间的n秒(即从最后一个完成到下一个完成的时间),还是应该每n秒开始一次,无论最后一个花了多长时间(或者是否成功) ?

回答这个问题应该告诉你这些请求是否需要并行(使用某种形式的并发),或者你是否可以通过一个持久的过程来完成。

答案 1 :(得分:0)

你对Sidekiq完全正确。这将是我认为最好的解决方案。可以通过average_scheduled_poll_interval配置轮询间隔。 Here there are documentation

这样做:

  1. 创建异步作业

  2. 作业完成后,排队同样的工作并要求Sidekiq等一段时间。 SMSDelegationJob.perform_later(wait: 10.seconds)

  3. 不要忘记为异常处理开发良好的逻辑

  4. 不要忘记设置低轮询间隔

  5. 手动或通过控制台进行智能根作业。

  6. 祝你好运。