Webbserverens huvuduppgift är att hantera HTTP -begäranden från klienten. Den väntar på att HTTP -förfrågningarna kommer från den specifika IP -adressen och portnumret, hanterar begäran och skickar tillbaka klientens svar. Python använder SimpleHTTPServer modul för att skapa en webbserver direkt och enkelt servera innehållet i filen från servern. Det kan också användas för fildelning. För detta måste du aktivera denna modul med platsen för de delbara filerna. Denna modul levereras med Python -tolk. Du behöver inte installera det. Eftersom denna modul slås samman med http.server modul i python3, så du måste köra http.server för att köra webbservern i python3. Hur webbserver kan användas för att hantera HTTP -begäran och dela filer har visats i den här självstudien.
Kör webbservern från terminalen
Kör följande kommando för att köra webbservern från terminalen. Om inget portnummer har definierats i kommandot startar webbservern som standard på 8000 port.
$ python3 -m http.server
Följande utdata visas om webbservern startas korrekt. CTRL+C trycks in för att stoppa servern.
Kör följande kommando för att starta webbservern vid 8080 -porten.
$ python3 -m http.server 8080
Följande utdata visas om webbservern startas vid 8080 -porten.
Kör webbservern med Python -skript
Kör följande kommandon för att skapa en mapp med namnet webb och gå till mappen. Alla skriptfiler och HTML -filer i den här självstudien skapas i den här mappen.
$ mkdir web$CDwebb
Skapa en HTML -fil med namnet testHTML.html inuti webb mapp med följande skript. Denna fil kommer att serveras från webbservern senare.
testHTML.html
< html >< huvud >
< titel >
Testa Python -webbservern
</ titel >
</ huvud >
< kropp >
< Centrum >
< img src='logo.jpeg' allt='Bild inte hittad'/>
< h2 stil='färg: grön'>Grattis! Din webbserver körs framgångsrikt.</ h2 >
< sid >Besök< till href='www.linuxhint.com'>LinuxHint.com</ till >för fler självstudier om Python</ sid >
</ Centrum >
</ kropp >
</ html >
Exempel 1: Kör webbservern i det specifika portnumret
Skapa en pythonfil med följande skript för att köra webbservern på 8008 -porten. http.server modul har importerats för att köra webbservern och SocketServer modul har importerats för att hantera HTTP -begäran som kommer från 8080 -porten. Ett objekt som heter Hanterare har skapats för att hantera HTTP -begäranden. evigt() funktion kallas för att köra webbservern. Inget uppsägningsvillkor har lagts till i skriptet. Så, skriptet kommer att generera ett fel när användaren försöker stoppa servern.
# Importera servermodulimporterahttp.server
# Importera SocketServer -modul
importerasocketserver
# Ställ in portnumret
hamn= 8080
# Skapa objekt för hantering av HTTP -förfrågningar
Hanterare=http.server.SimpleHTTPRequestHandler
# Kör servern för alltid för att hantera HTTP -begäranden
medsocketserver.TCPServer(('',hamn),Hanterare) somhttpd:
skriva ut('Webbserver körs på http: // localhost:%s'%hamn)
httpd.serve_forever()
Produktion
Följande utdata kommer att visas efter att ovanstående skript har körts.
Listan över filer och mapp för skriptplatsen visas om följande URL körs från webbläsaren.
Om användaren trycker på CTRL+C från terminalen eller trycker på stoppknappen från PyCharm -redigeraren, visas följande felmeddelande. Detta problem har lösts i nästa exempel på denna handledning.
Exempel 2: Kör webbservern med portnumret definierat av kommandoraden
Skapa en pythonfil med följande skript för att köra en webbserver vid den specifika porten om kommandoradsargumentet ger portnumret; annars kommer 5000 att användas som standardport. sys modul har importerats i skriptet för att läsa kommandoradsargumentvärdena. försök-utom block har lagts till i skriptet för att hantera felet när användaren försöker stoppa servern. Om undantaget KeyboardInterrupt visas efter att servern körts, kommer stänga() funktion kommer att kallas för att stoppa webbservern.
# Importera servermodulimporterahttp.server
# Importera SocketServer -modul
importerasocketserver
# Importera sys -modul
importera sys
Prova:
# Ställ in portnumret
om sys.argv[1:]:
hamn= int(sys.argv[1])
annan:
hamn= 5000
# Ställ in IP -adressen
server adress= ('127.0.0.1',hamn)
# Skapa objekt för hantering av HTTP -förfrågningar
Hanterare=http.server.SimpleHTTPRequestHandler
# Kör webbservern för alltid för att hantera HTTP -begäranden
medsocketserver.TCPServer(('',hamn),Hanterare) somhttpd:
skriva ut('Webbserver körs på http: // localhost:%s'%hamn)
httpd.serve_forever()
# Stoppade servern
bortsett från KeyboardInterrupt:
httpd.server_close()
skriva ut('Servern är stoppad.')
Produktion
Följande utdata visas efter att man har kört ovanstående skript utan kommandoradsargumentvärde.
Följande utdata visas om kör HTML -filen som skapades i föregående steg från webbservern.
Öppna konfigurationsdialogrutan från Kör-menyn i PyCharm-redigeraren för att ställa in kommandoradsargumentvärdet. Parametrarfält används för att ställa in kommandoradsargumentet och 3000 anges här som argumentvärde.
Följande utdata visas om du kör skriptet igen efter att du har ställt in argumentvärdet.
Exempel 3: Kör webbservern med HTML-filen
Skapa en pythonfil med följande skript för att köra webbservern genom att definiera HTML -filen för basadressen. Värdnamnet och portnumret har definierats i början av skriptet. PythonServer class har definierat i skriptet för att visa HTML -filen i webbläsaren när webbservern börjar köras.
# Importera servermodulenimporterahttp.server
# Ställ in värdnamnet
VÄRD= 'lokal värd'
# Ställ in portnumret
HAMN= 4000
# Definiera klass för att visa webbserverns indexsida
klassPythonServer(http.server.SimpleHTTPRequestHandler):
deffår(själv):
om själv.väg == '/':
själv.väg = 'testHTML.html'
lämna tillbakahttp.server.SimpleHTTPRequestHandler.får(själv)
# Förklara objekt för klassen
webbserver=http.server.HTTPS -server((VÄRD,HAMN),PythonServer)
# Skriv ut webbservern
skriva ut('Servern startade http: //%s:%s'%(VÄRD,HAMN))
Prova:
# Kör webbservern
webbserver.serve_forever()
bortsett från KeyboardInterrupt:
# Stoppa webbservern
webbserver.server_close()
skriva ut('Servern är stoppad.')
Produktion
Följande utdata visas med det ovanstående skriptet.
Följande sida visas i webbläsaren om webbläsarens bas -URL för webbservern körs.
Slutsats
De olika sätten att implementera webbservrar med http. server modulen har visat sig i denna handledning för att hjälpa pythonanvändare att skapa en enkel webbserver i Python.