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.