Dämonisieren Sie eine Python-Webanwendung mit Supervisor

Als ich eine Python-Webanwendung mit aws unter Verwendung des Tornado-Frameworks entwickelte, schläft die mit aws ausgeführte Webanwendung häufig (die App fällt aus). Daher habe ich sie zu einem Daemon gemacht und sie rund um die Uhr zum Laufen gebracht (immer gestartet). Ein Memo, als ich versuchte aufzuwachen (die Anwendung neu zu starten), auch wenn ich eingeschlafen bin.

Was ist Supervisor?

Supervisor ist ein leichtes Prozessmanagement-Tool, das in Python erstellt wurde.

Verfahren

Das Verfahren ist wie folgt. Alle Arbeiten werden mit Ubuntu 14.04 auf aws erledigt.

Installation

Supervisor kann entweder mit "apt-get" oder "pip" installiert werden, aber vorerst werde ich beschreiben, wie man mit "apt-get" unter Ubuntu installiert.

$ sudo apt-get install supervisor

Bestätigen Sie, dass es installiert wurde. Die Version scheint "3.0b2" zu enthalten.

$ supervisord -v
3.0b2

$ sudo supervisorctl version
3.0b2

Aufbau

Schreiben Sie die Informationen zum Starten der Webanwendung in die Supervisor-Einstellungsdatei (conf-Datei). Erstellen Sie eine conf-Datei in * /etc/supervisor/conf.d/*.

$ sudo vim /etc/supervisor/conf.d/tornado.conf

Der Inhalt ist wie folgt. Der Name des vom Supervisor zu verwaltenden Prozesses lautet ** tornado **.

tornado.conf


[program:tornado]  ;Vorgangsname
directory=/home/ubuntu/tornado-app  ;Arbeitsverzeichnis
command=/home/ubuntu/tornado-app/venv/bin/python /home/ubuntu/tornado-app/server.py --port=3000  ;Befehl starten
numprocs=1  ;Anzahl der Boot-Instanzen?
autostart=true  ;Auto-Start
autorestart=true  ;Automatisch neu starten
user=ubuntu  ;Benutzer starten
redirect_stderr=true  ;Standardfehler ausgeben
stdout_logfile=/var/log/supervisor/tornado.log  ;Ausgabeziel der Protokolldatei

Angenommen, die Web-App wurde bereits in "/ home / ubuntu / tornado-app" geklont.

$ cd ~/tornado-app
$ source venv/bin/activate  #aktiviere virtualenv
(venv)$ python server.py --port=3000 &

Informationen zum Schreiben der Supervisor-Konfigurationsdatei finden Sie auch unter Supervisor-Konfiguration.

Starten Sie den Supervisor und lesen Sie die Einstellungsdatei

Starten Sie den Supervisor mit dem Befehl "Service Supervisor"

Starten Sie Supervisor selbst neu.

$ sudo service supervisor restart

Stellen Sie sicher, dass der Supervisor selbst ausgeführt wird.

$ sudo service supervisor status
 is running

Prozesse starten und verwalten

Verwalten Sie den Prozess mit dem Befehl Supervisorctl.

Wenn Sie die conf-Datei ändern, müssen Sie sie unbedingt erneut lesen. Verwenden Sie den folgenden Befehl, um die conf-Datei zu lesen.

$ sudo supervisorctl reread

Starten Sie danach die von Supervisor verwaltete Webanwendung.

$ sudo supervisorctl start tornado  #Anlaufen

Überprüfen Sie, ob die Webanwendung ausgeführt wird.

$ sudo supervisorctl status  #Statusprüfung
tornado                          RUNNING    pid 3414, uptime 0:07:19

Es begann!

Übrigens sind Stopp und Neustart wie folgt.

$ sudo supervisorctl stop tornado  #Halt
$ sudo supervisorctl restart tornado  #Starten Sie neu

Darüber hinaus war hier für den Befehl Supervisorctl hilfreich.

Referenz

Recommended Posts

Dämonisieren Sie eine Python-Webanwendung mit Supervisor
Spielen Sie wie eine Web-App mit ipywidgets
[Python] Eine schnelle Webanwendung mit Bottle!
Erstellen Sie eine einfache Web-App mit Flasche
Einfache Web-App mit Python + Flask + Heroku
Führen Sie eine Python-Webanwendung mit Docker aus
Erstellen Sie ein Webframework mit Python! (1)
Erstellen Sie eine Desktop-App mit Python mit Electron
Erstellen Sie ein Webframework mit Python! (2)
Dämonisiere einen Python-Prozess
Gewinnen Sie die Python + Flask-Web-App mit Jenkins
Starten Sie einen Webserver mit Python und Flask
Extrahieren Sie mit Python Daten von einer Webseite
Stellen Sie Python 3.6 / Django / Postgres-Webanwendungen in Azure bereit
Web Scraping mit Python + JupyterLab
[Übung] Erstellen Sie eine Watson-App mit Python! # 2 [Übersetzungsfunktion]
[Übung] Erstellen Sie eine Watson-App mit Python! # 1 [Sprachdiskriminierung]
Ich habe mit Python eine App für die Benachrichtigung über Netznachrichten erstellt
Starten Sie mit Docker eine Python-Webanwendung auf Nginx + Gunicorn
Web-API mit Python + Falcon
Machen Sie eine Lotterie mit Python
Schreiben Sie Code in UnitTest, eine Python-Webanwendung
Webanwendung mit Python + Flask ② ③
Web Scraping Anfänger mit Python
Erstellen Sie ein Verzeichnis mit Python
Stellen Sie Echtzeit-Webanwendungen mit swampdragon x apache bereit
Optimieren Sie die Websuche mit Python
Stellen Sie eine mit Streamlit erstellte Web-App für Heroku bereit
Webanwendung mit Python + Flask ④
So stellen Sie eine mit Flask erstellte Web-App für Heroku bereit
[Übung] Erstellen Sie eine Watson-App mit Python! # 3 [Klassifizierung der natürlichen Sprache]
Betten Sie einen Python-Interpreter mit pybind11 + cmake in eine C ++ - App ein
(Fehler) Stellen Sie eine mit Flask mit Heroku erstellte Web-App bereit
Löse ABC163 A ~ C mit Python
Bedienen Sie den Belegdrucker mit Python
Python-Grafikhandbuch mit Matplotlib.
Lassen Sie uns eine GUI mit Python erstellen.
Erste Schritte mit Python-Webanwendungen
Löse ABC166 A ~ D mit Python
Web Scraping mit Python Erster Schritt
Ich habe versucht, WebScraping mit Python.
Überwachen Sie Python-Webanwendungen mit Prometheus
Erstellen Sie eine virtuelle Umgebung mit Python!
Holen Sie sich Web-Screen-Capture mit Python
Ich habe mit Python eine Lotterie gemacht.
Erstellen einer virtuellen Umgebung mit Python 3
Löse ABC168 A ~ C mit Python
Erstellen Sie ein Empfehlungssystem mit Python
Erstellen Sie eine Webanwendung mit Django
[Python] Generiere ein Passwort mit Slackbot
Löse ABC162 A ~ C mit Python
Löse ABC167 A ~ C mit Python
Löse ABC158 A ~ C mit Python
Lassen Sie uns ein Diagramm mit Python erstellen! !!
[Python] Erbt eine Klasse mit Klassenvariablen
Ich habe mit Python einen Daemon erstellt
Schreiben Sie ein Batch-Skript mit Python3.5 ~
[Python, Ruby] Selen-Holen Sie sich Webseiteninhalte mit Webdriver