#ruby-on-rails #ruby #queue #delayed-job
#ruby-on-rails #ruby #очередь #отложенное задание
Вопрос:
Я использую delayed_jobs и rest_client в своем приложении, я создал папку заданий и класс заданий jobs / test_job.rb.
class TestJob < Struct.new(:name)
def perform
RestClient.get "http://name"
end
end
RestClient и DelayedJob работают нормально, но когда клиент (http://name ) не работает, delayed_job выдает ошибку SocketError и не повторяет ее.
В моем контроллере у меня есть это.
Delayed::Job.enqueue TestJob.new(my_other_rails_app), :queue => "my_test"
Не запрашивается ли delayed_job при возникновении ошибки?
Ответ №1:
Я решаю проблему, отложенное задание работает, если ошибка произошла в другой базе данных, так что проблема была в моей базе данных, я использую openedge, и ошибка заключается в том, что символьная строка слишком длинная для поля last_error, поэтому мне нужно изменить gem, чтобы ошибка не сохранялась долго, или изменить длину символа поля. отложенное задание-4-1-2 libdelayedbackendbase.rb Из:
def error=(error)
@error = error
self.last_error = "#{error.message}n#{error.backtrace.join("n")}" if respond_to?(:last_error=)
end
Для:
def error=(error)
@error = error
self.last_error = "#{error.message}" if respond_to?(:last_error=)
end