【问题标题】:Does sleep work right in a sidekiq worker?睡眠在 sidekiq 工作人员中是否有效?
【发布时间】:2019-08-30 02:05:46
【问题描述】:

我有执行http请求和更新数据库的sidekiq worker,我在worker执行的方法内部使用sleepsleep 需要防止频繁的 http 请求,但看起来 sleep 不能按预期工作。例如,我有一个 http 请求,它获取一些数据并将该数据保存到数据库,然后 sleep 2,但数据保存速度比每 2 条记录更快 秒。

附:我需要精确地延迟作业(而不是它们之间),因为一名工作人员在一次作业执行时执行多个 http 请求,并且我需要每个 http 请求之间的延迟。

【问题讨论】:

  • 根据 Sidekiq 的作者it works fine。我的经历是一样的。你确定你没有很多并行产生的工人和频繁的保存吗?
  • @katafrakt,是的,当 worker 在 5 个线程中运行时观察到奇怪的行为,其中 1 个线程 sleep 的行为接近预期。总之谢谢

标签: ruby-on-rails ruby sidekiq


【解决方案1】:

sleep 仅暂停该线程。其他线程将执行其他作业,可能同时进行其他 HTTP 调用。如果这是一个问题,您需要使用速率限制器或安排您的作业(例如每秒 1 个)以最小化并发。

【讨论】:

    猜你喜欢
    • 2013-07-10
    • 2018-11-05
    • 1970-01-01
    • 2015-10-16
    • 2012-09-30
    • 2012-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多