2016-10-24 1 views
0

J'utilise delayed_jobs et rest_client dans mon application, j'ai créé un dossier de jobs et un job jobs/test_job.rb.Utilisation de DelayedJob et RestClient dans Rails 4.2.5 Jruby 2.2.2

class TestJob < Struct.new(:name) 
def perform 
    RestClient.get "http://name" 
end 
end 

RESTClient et DelayedJob fonctionne très bien, mais quand le client (http://name) est en baisse, le delayed_job me donne l'erreur SocketError et non réessayant il.

Dans mon contrôleur, j'ai ceci.

Delayed::Job.enqueue TestJob.new(my_other_rails_app), :queue => "my_test" 

Est-ce que delayed_job n'est pas remis en file d'attente lorsqu'une erreur est survenue?

Répondre

0

je résoudre le problème, l'emploi retardé fonctionne si erreur est survenue dans la base de données différente, il était donc ma base de données a le problème, Im en utilisant OpenEdge et l'erreur est une chaîne de caractères est trop long pour le champ LAST_ERROR, donc je dois modifier le gem pour ne pas enregistrer une erreur longue ou modifier la longueur du caractère de champ. retardée travail-4-1-2 \ lib \ retardé \ backend \ base.rb De:

def error=(error) 
    @error = error 
    self.last_error = "#{error.message}\n#{error.backtrace.join("\n")}" if respond_to?(:last_error=) 
end 

Pour:

def error=(error) 
@error = error 
self.last_error = "#{error.message}" if respond_to?(:last_error=) 
end