目前,我有一份类似于sidekiq的工作:

class SyncUser
  include Sidekiq::Worker

  def perform(user_id)
    #do stuff
  end
end

我在队列中放置一份工作,如下所示:

SyncUser.perform_async user.id

这一切当然都是可行的,但在调用perform_async和实际执行作业(job)之间有点滞后.

我还能做些什么来告诉sidekiq立即执行任务吗?

推荐答案

这里有两个问题.

如果要立即执行作业(job),在当前上下文中,可以使用:

SyncUser.new.perform(user.id)

如果要减少计划的异步工作与在sidekiq worker中执行异步工作之间的延迟,可以减少poll_interval设置:

Sidekiq.configure_server do |config|
  config.poll_interval = 2
end

poll_interval是工人后端的延迟,即工人判断队列中作业(job)的频率.安排一项工作和由一名自由工人执行之间的平均时间为poll_interval / 2.

Ruby相关问答推荐

Ruby脚本递归地创建深度嵌套的目录

ruby 中嵌套哈希中相同键的平均值

在 Ruby 中,如何从派生类中重写同一方法的不同方法调用基类方法?

如何在Ruby中匹配大型IP网络对象列表中的IP地址

Ruby - 使用索引值识别和更新数组中的重复项

Windows powershell文件类型编码中Ruby IO流的原因是什么

如何使用正则表达式在字符串中查找特定匹配项

如何使用 RSpec 忽略或跳过测试方法?

Ruby:如何卸载设计(uninstall Devise)?

从索引到字符串结尾的子字符串的Ruby成语

使用正则表达式在第一个逗号之前提取文本

如何使用 RVM 重新编译 ruby​​?

Ruby 是否有任何数字格式化类?

我如何需要特定版本的 ruby​​ gem?

获取Ruby中数组的差异

rspec 是否有比 target.should < 6 更具体的东西?

确定一个值是否存在于哈希数组中

获取当前 ruby​​ 进程内存使用情况

如何在 Ruby 中编写复杂的多行 if 条件?

如何在没有警告的情况下重新定义 Ruby 常量?