Ich habe eine andere Frage zur Verzeichnisüberwachung gestellt, die beantwortet wurde, aber die andere Hälfte der Frage lautet, wie man am besten einen unendlichen Prozess in Ruby erstellt, um dies zu tun. Hier sind die Anforderungen:
Wir haben uns BackgroundRb angesehen, aber das scheint etwas veraltet und um ehrlich zu sein unzuverlässig! Wir haben uns DelayedJob angesehen, aber das scheint auf einmalige Jobs ausgerichtet zu sein (weil ein nie endender Job jeden anderen Job daran hindert, fertig zu werden, da Jobs sequentiell ausgeführt werden).
Wir betreiben eine Menge Ubuntu-Server, die unsere Umgebung bilden.
Irgendwelche Ideen?
Ich habe eine Event-Machine-Schleife, die einige nginx-Log-Dateien zurücklegt und sie in MongoDB legt. Die "Log Esser" Skripte laufen mit Ruby Daemons. Ссылка
Ich habe festgestellt, dass es viel zuverlässiger ist als Gott. Dadurch wird auch das Skript überwacht und neu gestartet, wenn es abstürzt. Wenn du eine Benachrichtigung möchtest, wenn der Läufer stirbt, kannst du monit dazu verwenden.
Hier ist mein Laufskript für Dämonen:
%Vor%Dies läuft seit vielen Monaten ohne oder mit keinem Problem. Gott hatte Probleme mit Lecks und Sterben. Capistrano kann dies durch einen Neustart Ihres Startskripts neu starten.
Hier ist ein Auszug von mir für gentoo linux
%Vor%- nach dem Start-Befehl für alle Argumente, die an Ihr Skript übergeben werden sollen.
Ich würde wahrscheinlich daemon-kit
sehen. Nicht sicher, ob es alle Ihre Anforderungen jedoch erfüllt:
In Ihrem Fall würde ich Resque verwenden. Es scheint Ihre Anforderungen zu erfüllen. Ich glaube, es kommt mit Beispielskripten für Capistrano zur Kontrolle der Arbeiter. Die Überwachung der Arbeiter mit Gott ist ein wenig komplizierter, aber es kommt mit einer Webkonsole, so dass Sie sehen können, was Ihre Arbeiter vorhaben. Es gibt eine Menge Plugins für Sie, um Ihre Bedürfnisse zu erfüllen.
Siehe Paul Dix 'Buch Service-orientiertes Design mit Ruby and Rails . Schau auch auf Sinatra .
Tags und Links ruby ruby-on-rails