【问题标题】:Sending http requests every n seconds in my Rails app在我的 Rails 应用程序中每 n 秒发送一次 http 请求
【发布时间】:2017-06-23 04:35:19
【问题描述】:

每隔n 秒数向外部 api 发送 http 请求的最佳方式是什么? n 在每次请求后都会发生变化。

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

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

你会怎么做这样的事情?

【问题讨论】:

  • 你为什么要这么做?

标签: ruby-on-rails ruby


【解决方案1】:

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

这样做:

  1. 创建一个异步作业

  2. 作业完成后,将相同的作业排入队列并让 Sidekiq 等待一段时间。 SMSDelegationJob.perform_later(wait: 10.seconds)

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

  4. 别忘了设置低轮询间隔

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

祝你好运。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 它们不能并行运行,我根据 api 的响应计算间隔。
    • 那么在 Ruby 脚本中使用循环怎么样?甚至可能是一项艰巨的任务。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-12
    • 2017-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    相关资源
    最近更新 更多