Hovedoppgaven til webserveren er å håndtere HTTP-forespørsler fra klienten. Den venter på HTTP-forespørsler som kommer fra den bestemte IP-adressen og portnummeret, håndterer forespørselen og sender klientens svar tilbake. Python bruker SimpleHTTPServer modul for å opprette en webserver umiddelbart og enkelt servere innholdet i filen fra serveren. Den kan også brukes til fildeling. For dette må du aktivere denne modulen med plasseringen av de delbare filene. Denne modulen leveres med Python-tolk. Du trenger ikke å installere den. Siden denne modulen er slått sammen med http.server modul i python3, så du må kjøre http.server for å kjøre webserveren i python3. Hvordan webserveren kan brukes til å håndtere HTTP-forespørsel og dele filer, har blitt vist i denne veiledningen.
Kjør webserveren fra terminalen
Kjør følgende kommando for å kjøre webserveren fra terminalen. Hvis det ikke er definert noe portnummer i kommandoen, starter webserveren som standard ved 8000 port.
$ python3 -m http.server
Følgende utdata vises hvis webserveren startes riktig. CTRL + C trykkes for å stoppe serveren.
Kjør følgende kommando for å starte webserveren ved 8080-porten.
Følgende utdata vises hvis webserveren startes i 8080-porten.
Kjør webserveren ved hjelp av Python-skript
Kjør følgende kommandoer for å opprette en mappe med navnet nett og gå til mappen. Alle skriptfilene og HTML-filene i denne opplæringen blir opprettet i denne mappen.
$ mkdir web$ cd web
Opprett en HTML-fil med navnet testHTML.html inne i nett mappe med følgende skript. Denne filen vil bli servert fra webserveren senere.
testHTML.html
Test Python Web Server
Gratulerer! Webserveren din kjører vellykket.
Besøk LinuxHint.com for flere opplæringsprogrammer om Python
Eksempel 1: Kjør webserveren i det spesifikke portnummeret
Opprett en python-fil med følgende skript for å kjøre webserveren ved 8008 port. http.server modulen er importert for å kjøre webserveren, og SocketServer modulen er importert for å håndtere HTTP-forespørselen som kommer fra 8080-porten. Et objekt som heter Behandler er opprettet for å håndtere HTTP-forespørsler. for evig() funksjonen kalles for å kjøre webserveren. Ingen avslutningsbetingelser er lagt til skriptet. Så skriptet vil generere en feil når brukeren prøver å stoppe serveren.
# Importer servermodulimporter http.server
# Importer SocketServer-modul
importer socketserver
# Still portnummeret
port = 8080
# Opprett objekt for håndtering av HTTP-forespørsler
Handler = http.server.SimpleHTTPRequestHandler
# Kjør serveren for alltid for å håndtere HTTP-forespørsler
med stikkontaktserver.TCPServer (("", port), Handler) som httpd:
skriv ut ("Web Server kjører på http: // localhost:% s"% port)
httpd.serve_forever ()
Produksjon
Følgende utdata vises når du har utført skriptet ovenfor.
Listen over filene og mappen til skriptplasseringen vises hvis følgende URL kjøres fra nettleseren.
Hvis brukeren trykker CTRL + C fra terminalen eller trykker på stoppknappen fra PyCharm-editoren, vises følgende feilmelding. Dette problemet er løst i neste eksempel på denne veiledningen.
Eksempel 2: Kjør webserveren med portnummeret definert av kommandolinjen
Opprett en python-fil med følgende skript for å kjøre en webserver i den bestemte porten hvis kommandolinjeargumentet gir portnummeret; ellers vil 5000 bli brukt som standardport. sys modulen har blitt importert i skriptet for å lese kommandolinjens argumentverdier. prøv-unntatt blokk er lagt til i skriptet for å håndtere feilen når brukeren prøver å stoppe serveren. Hvis unntaket KeyboardInterrupt vises etter at du har kjørt serveren, vil Lukk() funksjon vil bli kalt for å stoppe webserveren.
# Importer servermodulimporter http.server
# Importer SocketServer-modul
importer socketserver
# Importer sys-modul
importer sys
prøve:
# Still portnummeret
hvis sys.argv [1:]:
port = int (sys.argv [1])
ellers:
port = 5000
# Angi IP-adressen
server_adresse = ('127.0.0.1 ', port)
# Opprett objekt for håndtering av HTTP-forespørsler
Handler = http.server.SimpleHTTPRequestHandler
# Kjør webserveren for alltid for å håndtere HTTP-forespørsler
med stikkontaktserver.TCPServer (("", port), Handler) som httpd:
skriv ut ("Web Server kjører på http: // localhost:% s"% port)
httpd.serve_forever ()
# Stoppet serveren
unntatt KeyboardInterrupt:
httpd.server_close ()
skriv ut ("Serveren er stoppet.")
Produksjon
Følgende utdata vises etter utførelse av ovennevnte skript uten kommandolinje argumentverdi.
Følgende utdata vises hvis du kjører HTML-filen som ble opprettet i forrige trinn fra webserveren.
Åpne konfigurasjonsdialogboksen fra Run-menyen i PyCharm-redigereren for å stille kommandolinjens argumentverdi. Parameterfelt brukes til å angi kommandolinjeargumentet, og 3000 settes her som argumentverdi.
Følgende utdata vises hvis du kjører skriptet igjen etter å ha angitt argumentverdien.
Eksempel 3: Kjør webserveren med HTML-filen
Opprett en python-fil med følgende skript for å kjøre webserveren ved å definere HTML-filen for basis-URL. Vertsnavnet og portnummeret er definert i begynnelsen av skriptet. PythonServer klasse har definert i skriptet å vise HTML-filen i nettleseren når webserveren begynner å kjøre.
# Importer servermodulenimporter http.server
# Angi vertsnavnet
HOST = "lokal vert"
# Still portnummeret
PORT = 4000
# Definer klasse for å vise indeksiden til webserveren
klasse PythonServer (http.server.SimpleHTTPRequestHandler):
def do_GET (selv):
hvis selv.sti == '/':
selv-.sti = 'testHTML.html '
returner http.server.SimpleHTTPRequestHandler.do_GET (selv)
# Erklær objektet til klassen
webServer = http.server.HTTPServer ((HOST, PORT), PythonServer)
# Skriv ut URL-adressen til webserveren
skriv ut ("Server startet http: //% s:% s"% (HOST, PORT))
prøve:
# Kjør webserveren
Internett server.serve_forever ()
unntatt KeyboardInterrupt:
# Stopp webserveren
Internett server.server_close ()
skriv ut ("Serveren er stoppet.")
Produksjon
Følgende utdata vises og utfører skriptet ovenfor.
Den neste siden vises i nettleseren hvis nettleserens grunnleggende URL til webserveren kjøres.
Konklusjon
De forskjellige måtene å implementere webservere på http. server modulen har vist i denne veiledningen for å hjelpe pythonbrukere med å lage en enkel webserver i Python.