Supervisor er et overvåkingsverktøy som kontrollerer ulike barn prosesser og håndtak start / omstart av disse barn prosesser når de avslutter brått eller avslutte på grunn av noen grunner. Det kan utvides for å kontrollere prosessene via XML-RPC API over eksterne steder uten å logge inn på serveren. Jeg vil dekke XML-RPC API i den andre delen av denne todelte serien.
I første del av denne opplæringsserien vil jeg ta deg gjennom hvordan du setter opp Supervisor for å jobbe med vår søknad. For dette vil jeg lage en trivial applikasjon i Flask sammen med Gunicorn for å fungere som vår WSGI HTTP-server.
Jeg antar at du har en grunnleggende forståelse av Flask, Gunicorn og miljøoppsett beste praksis ved hjelp av virtualenv som skal følges mens du utvikler en Python-applikasjon.
Følgende pakker må installeres for å utvikle og kontrollere applikasjonen vi skal utvikle.
$ pip installere gunicorn supervisor Flask
Jeg skal nå lage en trivial applikasjon i Flask. Denne applikasjonen er liten, men vil tilfredsstille behovene til denne opplæringen.
Nedenfor er søknadens struktur:
flask_app / my_app / - __init__.py - views.py
fra kolbe import Flask app = Flask (__ name__) import my_app.views
I filen ovenfor er applikasjonen konfigurert og initialisert.
fra my_app importer app @ app.route ('/') def hello_world (): returnere "Hei til verden av kolbe!"
I filen ovenfor har jeg opprettet et enkelt Hello World-endepunkt.
For å kjøre programmet som en prosess, kan vi bruke Gunicorn. For å sjekke om Gunicorn fungerer som forventet, bare kjør følgende kommando fra innsiden av applikasjonsmappen.
$ gunicorn -w 4 -b 127.0.0.1:8000 my_app: app
Etter dette, peker nettleseren din på http://127.0.0.1:8000/ for å se søknadens hjemmeside.
Nå må vi gjøre det samme ved hjelp av veileder, slik at dette løper som en demon og vil bli kontrollert av veileder selv i stedet for menneskelig innblanding.
Først av alt, trenger vi en Supervisor-konfigurasjonsfil. Tilsynsfører, som standard, ser etter en etc
mappe som har en fil som heter supervisord.conf
. I systemavhengige installasjoner er denne mappen /etc/
, og i virtualenv vil den se etter en etc
mappe i virtualenv og deretter falle tilbake til /etc/
.
Hvis det gjelder en systemavhengig installasjon, kjør:
$ echo_supervisord_conf> /etc/supervisord.conf
I tilfelle av virtualenv, fra inne i virtualenv-rotmappen, kjør:
$ echo_supervisord_conf> etc / supervisord.conf
De echo_supervisord_conf
Programmet er gitt av veileder; den skriver ut en sample config-fil til den angitte plasseringen. Dette vil opprette en fil som heter supervisord.conf
på stedet som er angitt i kommandoen ovenfor.
For å konfigurere Supervisor for vår søknad, legg til følgende blokk et sted i denne filen:
[program: supervisor_demo] command =/ bin / gunicorn -w 4 -b 127.0.0.1:8000 my_app: app katalog = / Veileder-tutsplus-demo user = someuser # Relevant bruker autostart = true automatisk omstart = true stdout_logfile = / tmp / app.log stderr_logfile = / tmp / error.log
Her konfigurerer vi kommandoen som må kjøres, og fra hvilken katalogplassering den trenger å gjøre det under hvilken bruker. Det er også angitt om du skal starte programmet på nytt i tilfelle feil. Logfilens steder kan også angis. Det finnes mange andre konfigurasjonsalternativer, som kan sees opp i den offisielle dokumentasjonen til veileder.
Legg merke til at man aldri bør kjøre programmene som en rotbruker. Dette er en stor sikkerhetsfeil som programmet krasjer, noe som kan skade selve operativsystemet.
For å kjøre programmet ved hjelp av Supervisor, kjør følgende kommandoer:
$ supervisord $ supervisorctl status supervisor_demo RUNNING pid 22550, oppetid 0:00:04
Den første kommandoen påberoper supervisord
server, og den neste gir status for alle barnprosessene.
Hver gang du gjør en endring i søknaden din og ønsker å starte Gunicorn for å gjenspeile endringene, kjør du følgende kommando:
$ supervisorctl starter på nytt alle
Du kan også gi bestemte prosesser i stedet for å starte på nytt alt:
$ supervisorctl start supervisor_demo igjen
Tilsynsføreren gir også et webgrensesnitt for grensesnitt som kan aktiveres ved å aktivere inet_http_server
konfigurasjonsblokk i supervisord.conf
. Denne webgrensesnittet kan sees opp på http: // localhost: 9001 /.
I denne opplæringen, har vi sett hvordan du konfigurerer Supervisor og bruke den til å kjøre et program som en daemon prosessen og styre prosessene kollektivt eller selektivt. I den andre delen av denne opplæringsserien vil vi se hvordan du kontrollerer og forhører Supervisor og dets programmer / prosesser ved hjelp av XML-RPC API.