Tornado Python als Dämon

Ich habe meinen Code mit Tornado geschrieben und ich möchte es so ziemlich wie Apache oder Nginx machen, das ist

  1. Es muss immer den Hafen zuhören, auch wenn ich die Schale schließe.
  2. Sie muss beim Systemneustart automatisch starten

Ich habe versucht nohup Befehl, um es zu arbeiten, auch wenn ich die Shell zu schließen. Es klappt. Aber ich frage mich, ob es eine saubere Option für das gleiche gibt?

2 Solutions collect form web for “Tornado Python als Dämon”

Ausgehend von der offiziellen Dokumentation hier .

Überblick

Die meisten Tornado Apps werden als einzelne Prozesse ausgeführt. Für die Produktion bedeutet dies in der Regel eine relativ geradlinige Kombination aus externem Prozessmanagement und Proxying. Hier sind einige gesammelte Best Practices / Ressourcen.

Entwicklung

Wenn der Debug-Modus aktiviert ist, werden die Vorlagen nicht zwischengespeichert und die App wird während der Entwicklung automatisch neu gestartet. Dies wird fehlschlagen, wenn ein Python-Syntaxfehler auftritt. (Dies kann um w / einige zusätzliche Code oder durch die Verwendung von Supervisor in der Entwicklung bearbeitet werden)

Vielleicht möchten Sie Ihre App aus einem Terminal-Multiplexer wie Bildschirm oder tmux für mehr Flexibilität beim Verlassen der Dinge laufen und verfolgen tödlichen Fehler.

Instrumentierung

Produktion

Typischerweise werden in der Produktion mehrere Tornado App-Prozesse (mindestens ein pro Core) mit einem Frontend-Proxy ausgeführt. Tornado-Entwickler bdarnell hat ein Tornado-Produktion-Skelett, das dies mit Supervisor (Prozessmanagement) und Nginx (Proxying) veranschaulicht.

Prozessmanagement

Traditionell sind Tornado-Apps Single-Prozess und benötigen einen externen Prozess-Manager, aber HTTPServer kann mit mehreren Prozessen ausgeführt werden . Darüber hinaus gibt es ein paar zusätzliche Helfer für die Hilfe bei der Verwaltung mehrerer Prozesse.

Supervisor

  • Verwalten von mehreren Pylons Apps mit Supervisor – ein ausgezeichnetes Tutorial für den Einstieg mit Supervisor
  • Bereitstellung Tornado Anwendung – kurze Tutorial w / Supervisor und Nginx Setup-Walkthrough
  • Supervisord-example.conf – das ist ein Beispiel cfg für das Ausführen von 4 Tornado-Instanzen
  • Nginx Supervisod Modul – dieses Modul ermöglicht es nginx, Backends auf Anforderung zu starten / zu stoppen

Daemonisierung

  • Start-Stop-Daemon-Beispiel – wenn Sie ein Standard-Linux-System laufen, ist dies eine einfache Möglichkeit, Ihre Tornado App zu deinemonisieren
  • Upstart-Beispiel – Upstart ist in Ubuntu eingebaut und kann abgestoßene Instanzen respektieren.

Tornado Multi-Prozess

Wie oben erwähnt, kann der HTTPServer von Tornado für beide Prozesse auf einer oder mehreren Sockets konfiguriert werden .

Proxying

Die offiziellen Dokumente enthalten ein Beispiel für das Ausführen von nginx als Load-Balancing-Proxy und zum Servieren von statischen Dateien.

Einsatz

  • Bereitstellung von Python-Web- (Tornado-) Anwendungen für mehrere Server – kurze Diskussion über die Verwendung eines Load Balancers für Live-Migration ohne Ausfallzeiten
  • Rolling Deployment mit Stoff
  • Python-Bereitstellung Anti-Patterns
  • Buedafab – eine schöne Sammlung von Fabric Deployment Scripts mit EC2

Kurz gesagt: Verwenden Sie supervisord und / oder nginx .

Überprüfen Sie diesen Link: http://blog.thisisfeifan.com/2012/06/deploy-tornado-application.html

  • Tornado.web.authenticated back button Ausgabe
  • Wie kann ich Tornado und Redis asynchron verwenden?
  • Beitrag zum Tornado Server
  • Python Socket.IO-Client für das Senden von Broadcast-Nachrichten an TornadIO2 Server
  • Wie man eine Nachricht vom Kind-Prozess an den Webserver-Client in Tornado sendet?
  • Private Messaging mit Sockjs-Tornado
  • Unicode-Strings in Tornado-Web-App
  • Wenn man Tornado benutzt, wenn man Twisted / Cyclone / GEvent / andere
  • Kann nicht Ergebnis () auf Futures in Tornado aufrufen
  • Tornado '@run_on_executor' blockiert
  • Tornado startet nicht sauber in Supervisor
  • Python ist die beste Programmiersprache der Welt.