2015-10-29 3 views
0

Я использую Rails ActiveJob с Sidekiq. У меня есть задание, которое должно выполняться через 5 секунд.Rails ActiveJob Работа с sidekiq delaying 6/10 секунд

UserArrivalJob.set(wait: 5.seconds).perform_later(user, planet) 

Только через 5 секунд работа все еще не запущена. Когда я смотрю в веб-интерфейсе sidekiq после этих 5 секунд, работа там, и он говорит: еще не установлен. Примерно через 6 - 10 секунд задание закладывается и немедленно выполняется. Как получилось, что эта задержка? Когда я использую выполнение, эта задержка не существует.

Вот моя работа:

class UserArrivalJob < ActiveJob::Base 
    queue_as :default 

    def perform(user, planet) 
    user.planet = planet 
    user.save 
end 

конец

+0

Когда вы задерживаете его, как это, вероятно, это на самом деле получает помещён на другую работу, которая просто не запускается, что часто. –

+0

Это единственное задание, которое у меня есть, знаете ли вы, как ускорить работу в очереди? – cccvandermeer

+0

Если бы я был вами, я бы начал читать код activejob. Скажем, это возможно. Это будет означать увеличение затрат на ресурс (более частый опрос очереди замедленных заданий и т. Д.) Является ли эта задержка на несколько секунд критической? Не может ли ваше приложение терпеть это? –

ответ

0

bcd был прав. Я установил конфигурацию sidekiq для запуска poller каждые 2 секунды.

сред/development.rb/среда/production.rb

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

Read here. В принципе, я думаю, что ваш сторонник polkik работает каждые 10 секунд, и он выбирает работу, когда она объединяется.

 Смежные вопросы

  • Нет связанных вопросов^_^