【发布时间】:2015-10-23 21:17:34
【问题描述】:
我想做一个 for 循环,在 sidekiq 工作人员中每个循环之间有 5 分钟的延迟。但是当我尝试将它部署到 Heroku 时,它会导致我的应用程序崩溃
class DelayedCallWorker
include Sidekiq::Worker
include Sidekiq::Status::Worker
def perform(survey_id)
@twilio_sid = ENV['TWILIO_ACCOUNT_SID']
@twilio_token = ENV['TWILIO_AUTH_TOKEN']
@twilio_number = ENV['TWILIO_NUMBER']
@survey = Survey.find(survey_id)
phone_number = @survey.call_center_number
@client = Twilio::REST::Client.new @twilio_sid, @twilio_token
@leads = @survey.leads.where(call_needed: true)
@leads.each do |lead|
@call = @client.account.calls.create(
:from => @twilio_number,
:to => lead.phone,
:url => "http://example.com/connect?number=#{phone_number}"
)
sleep, 180
end
end
end
如果我注释掉 sleep, 180 一切正常,但不会有延迟。
我还尝试了一种变体,我在控制器中循环遍历引线,并使用 perform_in(5.minutes, survey_id) 为每个工作人员创建具有更长延迟的工作人员,但这同样会导致 heroku 崩溃。
有谁知道从 sidekiq 工作人员内部查看延迟的最佳方法是什么?
【问题讨论】:
标签: ruby-on-rails heroku sidekiq