3 Stimmen

Wie schreibe ich eine Resque-Bedingung, die besagt: "Wenn ein Prozess länger als n Sekunden läuft, beende ihn"?

Ich habe ein god/resque Setup, das sich über mehrere Worker-Server erstreckt. Hin und wieder kommt es vor, dass die Worker durch lange Polling-Verbindungen überlastet werden und das Timeout nicht korrekt erfolgt. Wir haben versucht, es zu kodieren (aber unabhängig davon, warum es nicht funktioniert), die keep-alive-Pakete, die die Leitung hinunter gesendet werden, lassen uns nicht Zeit es leicht aus.

Ich möchte, dass bestimmte Worker (die ich bereits in ihre eigenen Watch-Blöcke unterteilt habe) nicht länger als eine bestimmte Zeit laufen dürfen. In Pesudocode suche ich nach einer Watch-Bedingung wie der folgenden (d.h. der Worker soll neu gestartet werden, wenn er länger als 60 Sekunden braucht, um die Aufgabe zu erledigen):

w.transition(:up, :restart) do |on|
  on.condition(:process_timer) do {|c|  c.greater_than = 60.seconds}
end

Für jede Idee oder jeden Hinweis, wie dies zu bewerkstelligen ist, wären wir sehr dankbar.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X