【问题标题】:Using DelayedJob and RestClient in Rails 4.2.5 Jruby 2.2.2在 Rails 4.2.5 Jruby 2.2.2 中使用 DelayedJob 和 RestClient
【发布时间】:2017-03-05 22:18:14
【问题描述】:

我在我的应用程序中使用了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 出错时不重新排队吗?

【问题讨论】:

    标签: ruby-on-rails ruby queue delayed-job


    【解决方案1】:

    我解决了这个问题,如果在不同的数据库中发生错误,延迟作业可以工作,所以是我的数据库有问题,我使用opengge并且错误是字符串对于last_error字段来说太长,所以我需要修改gem不保存长错误或更改字段字符长度。 延迟作业 4-1-2\lib\delayed\backend\base.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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-07
      • 2020-06-13
      • 1970-01-01
      • 1970-01-01
      • 2014-08-13
      • 2023-03-16
      • 1970-01-01
      相关资源
      最近更新 更多