Webserverens hovedopgave er at håndtere HTTP -anmodninger fra klienten. Den venter på, at HTTP -anmodningerne kommer fra den særlige IP -adresse og portnummer, håndterer anmodningen og sender klientens svar tilbage. Python bruger SimpleHTTPS -server modul til at oprette en webserver med det samme og let betjene filens indhold fra serveren. Det kan også bruges til fildeling. Til dette skal du aktivere dette modul med placeringen af de filer, der kan deles. Dette modul leveres med Python -tolken. Du behøver ikke at installere det. Da dette modul er fusioneret med http.server modul i python3, så du skal køre http.server at køre webserveren i python3. Hvordan webserver kan bruges til at håndtere HTTP -anmodninger og dele filer, er blevet vist i denne vejledning.
Kør webserveren fra terminalen
Kør følgende kommando for at køre webserveren fra terminalen. Hvis der ikke er defineret noget portnummer i kommandoen, starter webserveren som standard med 8000 port.
$ python3 -m http.server
Følgende output vises, hvis webserveren startes korrekt. CTRL+C trykkes for at stoppe serveren.
Kør følgende kommando for at starte webserveren ved 8080 port.
$ python3 -m http.server 8080
Følgende output vises, hvis webserveren startes på 8080 -porten.
Kør webserveren ved hjælp af Python -script
Kør følgende kommandoer for at oprette en mappe med navnet Web og gå til mappen. Alle scriptfiler og HTML -filer i denne vejledning oprettes inde i denne mappe.
$ mkdir web$CDWeb
Opret en HTML -fil med navnet testHTML.html inde i Web mappe med følgende script. Denne fil vil blive serveret fra webserveren senere.
testHTML.html
< html >< hoved >
< titel >
Test Python -webserveren
</ titel >
</ hoved >
< legeme >
< centrum >
< img src='logo.jpeg' alt='Billedet blev ikke fundet'/>
< h2 stil='farve: grøn'>Tillykke! Din webserver kører.</ h2 >
< s >Besøg< til href='www.linuxhint.com'>LinuxHint.com</ til >for flere selvstudier om Python</ s >
</ centrum >
</ legeme >
</ html >
Eksempel-1: Kør webserveren i det specifikke portnummer
Opret en python -fil med følgende script for at køre webserveren på 8008 -port. http.server modul er blevet importeret til at køre webserveren, og SocketServer modul er blevet importeret til at håndtere HTTP -anmodningen, der kommer fra 8080 -porten. Et objekt navngivet Handler er blevet oprettet til at håndtere HTTP -anmodningerne. for evigt() funktion kaldes til at køre webserveren. Der er ikke tilføjet nogen opsigelsesbetingelse til scriptet. Så scriptet genererer en fejl, når brugeren forsøger at stoppe serveren.
# Importer servermodulimporterehttp.server
# Importer SocketServer -modul
importeresocketserver
# Indstil portnummeret
Havn= 8080
# Opret objekt til håndtering af HTTP -anmodninger
Handler=http.server.SimpleHTTPRequestHandler
# Kør serveren for evigt for at håndtere HTTP -anmodningerne
medsocketserver.TCPServer(('',Havn),Handler) somhttpd:
Print('Webserver kører på http: // localhost:%s'%Havn)
httpd.serve_forever()
Produktion
Følgende output vises efter udførelse af ovenstående script.
Listen over filer og mappe for scriptplaceringen vises, hvis følgende URL udføres fra browseren.
Hvis brugeren trykker på CTRL+C fra terminalen eller trykker på stopknappen fra PyCharm -editoren, vises følgende fejlmeddelelse. Dette problem er løst i det næste eksempel på denne vejledning.
Eksempel-2: Kør webserveren med portnummeret defineret af kommandolinjen
Opret en python-fil med følgende script for at køre en webserver på den bestemte port, hvis kommandolinjeargumentet giver portnummeret; ellers vil 5000 blive brugt som standardport. sys modul er blevet importeret i scriptet for at læse kommandolinjens argumentværdier. prøv-undtagen blok er blevet tilføjet i scriptet for at håndtere fejlen, når brugeren forsøger at stoppe serveren. Hvis undtagelsen KeyboardInterrupt vises efter serverens kørsel, vil tæt() funktion vil blive kaldt til at stoppe webserveren.
# Importer servermodulimporterehttp.server
# Importer SocketServer -modul
importeresocketserver
# Importer sys -modul
importere sys
prøve:
# Indstil portnummeret
hvis sys.argv[1:]:
Havn= int(sys.argv[1])
andet:
Havn= 5000
# Indstil IP -adressen
serveradresse= ('127.0.0.1',Havn)
# Opret objekt til håndtering af HTTP -anmodninger
Handler=http.server.SimpleHTTPRequestHandler
# Kør webserveren for evigt for at håndtere HTTP -anmodningerne
medsocketserver.TCPServer(('',Havn),Handler) somhttpd:
Print('Webserver kører på http: // localhost:%s'%Havn)
httpd.serve_forever()
# Stoppede serveren
undtagen TastaturInterrupt:
httpd.server_luk()
Print('Serveren er stoppet.')
Produktion
Følgende output vises efter udførelse af ovenstående script uden kommandolinjeargumentværdi.
Følgende output vises, hvis kør HTML -filen, der blev oprettet i det foregående trin fra webserveren.
Åbn konfigurationsdialogboksen i menuen Kør i PyCharm-editoren for at angive kommandolinjens argumentværdi. Parameterfelt bruges til at angive kommandolinjeargumentet, og 3000 angives her som argumentværdi.
Følgende output vises, hvis du kører scriptet igen efter indstilling af argumentværdien.
Eksempel-3: Kør webserveren med HTML-filen
Opret en python -fil med følgende script for at køre webserveren ved at definere HTML -filen for basis -URL'en. Værtsnavnet og portnummeret er defineret i begyndelsen af scriptet. PythonServer class har defineret i scriptet til at vise HTML -filen i browseren, når webserveren begynder at køre.
# Importer servermoduletimporterehttp.server
# Indstil værtsnavnet
VÆRT= 'lokal vært'
# Indstil portnummeret
HAVN= 4000
# Definer klasse for at vise webservers indeksside
klassePythonServer(http.server.SimpleHTTPRequestHandler):
defdo_GET(selv):
hvis selv.sti == '/':
selv.sti = 'testHTML.html'
Vend tilbagehttp.server.SimpleHTTPRequestHandler.do_GET(selv)
# Erklær objekt for klassen
Webserver=http.server.HTTPS -server((VÆRT,HAVN),PythonServer)
# Udskriv webserverens URL
Print('Serveren startede http: //%s:%s'%(VÆRT,HAVN))
prøve:
# Kør webserveren
Webserver.serve_forever()
undtagen TastaturInterrupt:
# Stop webserveren
Webserver.server_luk()
Print('Serveren er stoppet.')
Produktion
Følgende output vises ved at udføre ovenstående script.
Den følgende side vises i browseren, hvis browserens basis -URL for webserveren udføres.
Konklusion
De forskellige måder at implementere webservere ved at bruge http. server modul har vist i denne vejledning for at hjælpe python -brugere med at oprette en simpel webserver i Python.