目前,我有一份类似于sidekiq的工作:
class SyncUser
include Sidekiq::Worker
def perform(user_id)
#do stuff
end
end
我在队列中放置一份工作,如下所示:
SyncUser.perform_async user.id
这一切当然都是可行的,但在调用perform_async和实际执行作业(job)之间有点滞后.
我还能做些什么来告诉sidekiq立即执行任务吗?
目前,我有一份类似于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
.