Frage

Ich habe es geschafft, meine Arbeitnehmer einzurichten und sie haben früher ohne Probleme ausgeführt (in der Entwicklung), aber jetzt weder in der Produktion noch in der Entwicklung (ich vermute, nachdem sie von SQLite3 zu PostgreSQL gewechselt worden sind).

Wenn ich einen Rake -Befehl ausführe, um die Arbeiter mitzuführen rake resque:work QUEUE=* Ich bekomme den folgenden Fehler und Stapelverfolgung:

getaddrinfo: nodename nor servname provided, or not known

Ich bekomme die folgenden Fehler beim Laufen heroku rake resque:work QUEUE=* in der Konsole, um anhängige Arbeiter in der Warteschlange zu testen.

Class         SentimentJob
Arguments     [4, 5, 6]
Exception     ActiveRecord::StatementInvalid
Error         PGError: server closed the connection unexpectedly This probably means
              the server terminated abnormally before or while processing the request.
              : SELECT a.attname, format_type(a.atttypid, a.atttypmod), d.adsrc,
              a.attnotnull FROM pg_attribute a LEFT JOIN pg_attrdef d ON a.attrelid =
              d.adrelid AND a.attnum = d.adnum WHERE a.attrelid = '"taggings"'::regclass
              AND a.attnum > 0 AND NOT a.attisdropped ORDER BY a.attnum

Und für meinen Facebook -Mitarbeiter:

Class         FBConnectionsJob
Arguments     1
Exception     OpenSSL::SSL::SSLError
Error         SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B:
              certificate verify failed

Class         FBConnectionsJob
Arguments     1
Exception     ActiveRecord::StatementInvalid
Error         PGError: server closed the connection unexpectedly This probably means
              the server terminated abnormally before or while processing the request.
              : SELECT tablename FROM pg_tables WHERE schemaname = ANY
              (current_schemas(false)) 

Warum bekomme ich in verschiedenen Umgebungen unterschiedliche Fehler? Meine Initialisierungsdateien sehen aus:

Soll ich hier Env -Spezifikationen hinzufügen?

Resque.rb

uri = URI.parse(ENV["REDISTOGO_URL"])
Resque.redis = Redis.new(:host => uri.host, :port => uri.port, :password => uri.password)
Dir["#{Rails.root}/app/jobs/*.rb"].each { |file| require file }

Redis.rb

uri = URI.parse(ENV["REDISTOGO_URL"])
REDIS = Redis.new(:host => uri.host, :port => uri.port, :password => uri.password)
Resque.redis = REDIS

Mein Umgebungen/Produktion.RB Datei hat keinen Bezug auf Redis und meine Umgebungen/Entwicklung.RB Die Datei hat dies für Redis -Setup:

ENV["REDISTOGO_URL"] = 'redis://username:password@my.host:6789' 
War es hilfreich?

Lösung

Das Hinzufügen von Folgendes zu meinem Rakefile hat ein ähnliches Problem für mich behoben:

task "resque:setup" => :environment do
  Resque.before_fork = Proc.new { ActiveRecord::Base.establish_connection }
end

Dies verbindet PostgreSQL, bevor Resque seinen Prozess zur Schaffung eines Arbeiters verabschiedet.

Andere Tipps

Es sieht so aus, als ob Ihre App keine Verbindung zum REDIS -Server herstellen kann. Haben Sie gültige Verbindungsdetails für die Produktionsumgebung angegeben? Sind Sie Redis Server verfügbar? Ist es nicht hinter der Firewall, die ein privates Netzwerk ist?

Ich denke, es ist möglicherweise das gleiche Problem mit Ihrem ProduktionspostgreSQL Server.

Ich habe die Initialisierer in Folgendes geändert und es funktioniert jetzt bei Localhost, also hatte @mirtinciu Recht mit der Serververbindung. Sie müssen noch herausfinden, was auf dem Produktionsserver falsch ist.

if Rails.env.development?
  uri = URI.parse(ENV["REDISTOGO_URL"])
  Resque.redis = Redis.new(:host => 'localhost', :port => '6379')
else
  uri = URI.parse(ENV["REDISTOGO_URL"])
  Resque.redis = Redis.new(:host => uri.host, :port => uri.port, :password => uri.password)
end

Ich denke, es ist ein Duplikat und wird durch Wiederherstellung der ActiveCord -Verbindung gelöst:Rails Resque -Mitarbeiter fehlen mit PGerRor: Server schloss die Verbindung unerwartet ab

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top