Я использую 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
конец
Когда вы задерживаете его, как это, вероятно, это на самом деле получает помещён на другую работу, которая просто не запускается, что часто. –
Это единственное задание, которое у меня есть, знаете ли вы, как ускорить работу в очереди? – cccvandermeer
Если бы я был вами, я бы начал читать код activejob. Скажем, это возможно. Это будет означать увеличение затрат на ресурс (более частый опрос очереди замедленных заданий и т. Д.) Является ли эта задержка на несколько секунд критической? Не может ли ваше приложение терпеть это? –