Glavni zadatak web poslužitelja je obrada HTTP zahtjeva od klijenta. Čeka HTTP zahtjeve koji dolaze s određene IP adrese i broja porta, obrađuje zahtjev i šalje odgovor klijenta natrag. Python koristi SimpleHTTPServer modul za trenutno stvaranje web poslužitelja i lako posluživanje sadržaja datoteke s poslužitelja. Može se koristiti i za dijeljenje datoteka. Da biste to učinili, morate omogućiti ovaj modul s mjestom datoteka koje se mogu dijeliti. Ovaj modul dolazi s tumačem Python. Ne trebate ga instalirati. Budući da je ovaj modul spojen sa http.poslužitelju modul u python3, pa morate pokrenuti http.poslužitelju za pokretanje web poslužitelja u python3. Kako se web poslužitelj može koristiti za obradu HTTP zahtjeva i dijeljenje datoteka, prikazano je u ovom vodiču.
Pokrenite web poslužitelj s terminala
Pokrenite sljedeću naredbu za pokretanje web poslužitelja s terminala. Ako u naredbi nije definiran nijedan broj porta, web poslužitelj će prema zadanim postavkama započeti s portom 8000.
$ python3 -m http.poslužitelju
Sljedeći će se izlaz pojaviti ako se web poslužitelj pravilno pokrene. Pritisnite CTRL + C da zaustavite poslužitelj.
Pokrenite sljedeću naredbu za pokretanje web poslužitelja na priključku 8080.
Sljedeći će se izlaz pojaviti ako je web poslužitelj pokrenut na priključku 8080.
Pokrenite web poslužitelj pomoću Python skripte
Izvedite sljedeće naredbe za stvaranje mape s imenom mreža i idite u mapu. Sve datoteke skripti i HTML datoteke ovog vodiča bit će stvorene u ovoj mapi.
$ mkdir web$ cd web
Stvorite HTML datoteku s imenom testHTML.html unutar mreža mapa sa sljedećom skriptom. Ova će se datoteka kasnije poslužiti s web poslužitelja.
testHTML.html
Testirajte Python web poslužitelj
Svaka čast! Vaš web poslužitelj uspješno radi.
Posjetiti LinuxHint.com za više vodiča o Pythonu
Primjer-1: Pokrenite web poslužitelj u određenom broju porta
Stvorite python datoteku sa sljedećom skriptom za pokretanje web poslužitelja na portu 8008. http.poslužitelju modul je uvezen za pokretanje web poslužitelja, a SocketServer modul je uvezen za obradu HTTP zahtjeva koji dolazi s porta 8080. Predmet imenovan Rukovatelj je stvoren za obradu HTTP zahtjeva. zauvijek() funkcija se poziva za pokretanje web poslužitelja. U skriptu nije dodan nijedan uvjet raskida. Dakle, skripta će generirati pogrešku kada korisnik pokuša zaustaviti poslužitelj.
# Uvoz modula poslužiteljauvoz http.poslužitelju
# Uvoz modula SocketServer
uvoz socketserver
# Postavite broj porta
luka = 8080
# Stvori objekt za rukovanje HTTP zahtjevima
Rukovatelj = http.poslužitelju.SimpleHTTPRequestHandler
# Pokrenite poslužitelj zauvijek za obradu HTTP zahtjeva
s poslužiteljem socket.TCPServer (("", port), Handler) kao httpd:
ispis ("Web poslužitelj pokrenut je na http: // localhost:% s"% port)
httpd.serve_forever ()
Izlaz
Sljedeći će se izlaz pojaviti nakon izvršavanja gornje skripte.
Popis datoteka i mapa na mjestu skripte prikazat će se ako se sljedeći URL izvrši iz preglednika.
Ako korisnik pritisne CTRL + C s terminala ili pritisne gumb za zaustavljanje iz uređivača PyCharm, prikazat će se sljedeća poruka o pogrešci. Ovaj je problem riješen u sljedećem primjeru ovog vodiča.
Primjer-2: Pokrenite web poslužitelj s brojem porta definiranim naredbenim retkom
Stvorite python datoteku sa sljedećom skriptom za pokretanje web poslužitelja na određenoj luci ako argument naredbenog retka daje broj porta; u protivnom, 5000 će se koristiti kao zadani port. sys modul je uvezen u skriptu za čitanje vrijednosti argumenata naredbenog retka. pokušaj-osim blok je dodan u skriptu za obradu pogreške kada korisnik pokuša zaustaviti poslužitelj. Ako se nakon pokretanja poslužitelja pojavi iznimka KeyboardInterrupt, tada se Zatvoriti() Pozvat će se funkcija za zaustavljanje web poslužitelja.
# Uvoz modula poslužiteljauvoz http.poslužitelju
# Uvoz modula SocketServer
uvoz socketserver
# Uvoz sys modula
import sys
probati:
# Postavite broj porta
ako sys.argv [1:]:
port = int (sys.argv [1])
drugo:
luka = 5000
# Postavite IP adresu
server_address = ('127.0.0.1 ', priključak)
# Stvori objekt za rukovanje HTTP zahtjevima
Rukovatelj = http.poslužitelju.SimpleHTTPRequestHandler
# Pokrenite web poslužitelj zauvijek za obradu HTTP zahtjeva
s poslužiteljem socket.TCPServer (("", port), Handler) kao httpd:
ispis ("Web poslužitelj pokrenut je na http: // localhost:% s"% port)
httpd.serve_forever ()
# Zaustavio je poslužitelj
osim KeyboardInterrupt:
httpd.server_close ()
print ("Poslužitelj je zaustavljen.")
Izlaz
Sljedeći će se izlaz pojaviti nakon izvršavanja gornje skripte bez vrijednosti argumenta naredbenog retka.
Sljedeći će se izlaz pojaviti ako pokrenete HTML datoteku koja je stvorena u prethodnom koraku s web poslužitelja.
Otvorite dijaloški okvir za konfiguraciju s izbornika Pokreni u uređivaču PyCharm da biste postavili vrijednost argumenta naredbenog retka. Polje parametara koristi se za postavljanje argumenta naredbenog retka, a 3000 je ovdje postavljeno kao vrijednost argumenta.
Sljedeći će se izlaz pojaviti ako ponovno pokrenete skriptu nakon postavljanja vrijednosti argumenta.
Primjer-3: Pokrenite web poslužitelj s HTML datotekom
Stvorite python datoteku sa sljedećom skriptom za pokretanje web poslužitelja definiranjem HTML datoteke za osnovni URL. Ime hosta i broj porta definirani su na početku skripte. PythonServer klasa je u skripti definirala prikaz HTML datoteke u pregledniku kada web poslužitelj počne raditi.
# Uvezite poslužiteljski moduluvoz http.poslužitelju
# Postavite ime hosta
HOST = "localhost"
# Postavite broj porta
LUKA = 4000
# Definirajte klasu za prikaz indeksne stranice web poslužitelja
klasa PythonServer (http.poslužitelju.SimpleHTTPRequestHandler):
def do_GET (samo):
ako ja.put == '/':
sebe.put = 'testHTML.html '
vratiti http.poslužitelju.SimpleHTTPRequestHandler.do_GET (samo)
# Deklarirajte objekt klase
webServer = http.poslužitelju.HTTPServer ((HOST, PORT), PythonServer)
# Ispišite URL web poslužitelja
print ("Poslužitelj pokrenut http: //% s:% s"% (HOST, PORT))
probati:
# Pokrenite web poslužitelj
webServer.serve_forever ()
osim KeyboardInterrupt:
# Zaustavite web poslužitelj
webServer.server_close ()
print ("Poslužitelj je zaustavljen.")
Izlaz
Pojavit će se sljedeći izlaz koji izvršava gornju skriptu.
Sljedeća će se stranica pojaviti u pregledniku ako se izvrši osnovni URL web poslužitelja preglednika.
Zaključak
Različiti načini implementacije web poslužitelja pomoću http. poslužitelju modul je prikazan u ovom vodiču kako bi pomogao korisnicima pythona stvoriti jednostavan web poslužitelj u Pythonu.