Hlavnou úlohou webového servera je vybavovať HTTP požiadavky od klienta. Čaká na požiadavky HTTP prichádzajúce z konkrétnej adresy IP a čísla portu, vybavuje požiadavku a odošle odpoveď klienta späť. Python používa SimpleHTTPServer modul na okamžité vytvorenie webového servera a jednoduché poskytovanie obsahu súboru zo servera. Môže sa použiť aj na zdieľanie súborov. Za týmto účelom musíte povoliť tento modul s umiestnením zdieľateľných súborov. Tento modul je dodávaný s interpretom Pythonu. Nemusíte ho inštalovať. Pretože je tento modul zlúčený s http.server modul v python3, takže musíte bežať http.server spustiť webový server v python3. V tomto výučbe je ukázané, ako možno webový server použiť na spracovanie požiadaviek HTTP a zdieľanie súborov.
Spustite webový server z terminálu
Spustením nasledujúceho príkazu spustíte webový server z terminálu. Ak v príkaze nie je definované žiadne číslo portu, webový server sa štandardne spustí na 8 000 porte.
$ python3 -m http.server
Nasledujúci výstup sa zobrazí, ak je webový server správne spustený. Stlačením kombinácie klávesov CTRL + C zastavíte server.
Spustením nasledujúceho príkazu spustíte webový server na porte 8080.
Nasledujúci výstup sa objaví, ak je webový server spustený na porte 8080.
Spustite webový server pomocou skriptu Python
Spustením nasledujúcich príkazov vytvorte priečinok s názvom web a prejdite do priečinka. Všetky súbory skriptov a súbory HTML tohto tutoriálu sa vytvoria v tomto priečinku.
$ mkdir web$ cd web
Vytvorte súbor HTML s názvom testHTML.html vnútri web priečinok s nasledujúcim skriptom. Tento súbor bude poskytnutý z webového servera neskôr.
testHTML.html
Vyskúšajte webový server Python
Gratulujem! Váš webový server je úspešne spustený.
Navštívte LinuxHint.com pre viac tutoriálov o Pythone
Príklad-1: Spustite webový server na konkrétnom čísle portu
Vytvorte súbor python s nasledujúcim skriptom, aby ste spustili webový server na porte 8008. http.server bol importovaný modul na spustenie webového servera a SocketServer bol importovaný modul na spracovanie požiadavky HTTP prichádzajúcej z portu 8080. Objekt s názvom Psovod bol vytvorený na spracovanie požiadaviek HTTP. navždy () sa volá funkcia na spustenie webservera. Do skriptu nebola pridaná žiadna podmienka ukončenia. Skript teda vygeneruje chybu, keď sa používateľ pokúsi server zastaviť.
# Importovať modul serveraimportovať http.server
# Importovať modul SocketServer
importovať socketový server
# Nastavte číslo portu
port = 8080
# Vytvoriť objekt na spracovanie požiadaviek HTTP
Handler = http.server.SimpleHTTPRequestHandler
# Spustiť server navždy na spracovanie požiadaviek HTTP
so zásuvkovým serverom.TCPServer (("", port), Handler) ako httpd:
print ("Webový server beží na porte http: // localhost:% s"%)
httpd.serve_forever ()
Výkon
Po vykonaní vyššie uvedeného skriptu sa zobrazí nasledujúci výstup.
Zoznam súborov a priečinkov umiestnenia skriptu sa zobrazí, ak sa z prehliadača spustí nasledujúca adresa URL.
Ak používateľ stlačí CTRL + C z terminálu alebo stlačí tlačidlo stop z editora PyCharm, zobrazí sa nasledujúce chybové hlásenie. Tento problém sa vyriešil v ďalšom príklade tohto tutoriálu.
Príklad 2: Spustite webový server s číslom portu definovaným v príkazovom riadku
Vytvorte súbor python s nasledujúcim skriptom na spustenie webového servera na konkrétnom porte, ak argument príkazového riadka udáva číslo portu; inak sa použije 5000 ako predvolený port. sys modul bol importovaný do skriptu na načítanie hodnôt argumentov príkazového riadku. skús - okrem Do skriptu bol pridaný blok na spracovanie chyby, keď sa používateľ pokúsi server zastaviť. Ak sa po spustení servera objaví výnimka KeyboardInterrupt, potom Zavrieť() bude zavolaná funkcia na zastavenie webservera.
# Import serverového moduluimportovať http.server
# Importovať modul SocketServer
importovať socketový server
# Importovať sys modul
import sys
skúste:
# Nastavte číslo portu
ak sys.argv [1:]:
port = int (sys.argv [1])
inak:
port = 5000
# Nastavte IP adresu
server_address = ('127.0.0.1 ', port)
# Vytvoriť objekt na spracovanie požiadaviek HTTP
Handler = http.server.SimpleHTTPRequestHandler
# Spustiť webový server navždy, aby mohol vybavovať požiadavky HTTP
so zásuvkovým serverom.TCPServer (("", port), Handler) ako httpd:
tlač ("Webový server je spustený na porte http: // localhost:% s"%)
httpd.serve_forever ()
# Server bol zastavený
okrem KeyboardInterrupt:
httpd.server_close ()
print ("Server je zastavený.„)
Výkon
Nasledujúci výstup sa objaví po vykonaní vyššie uvedeného skriptu bez hodnoty argumentu príkazového riadku.
Nasledujúci výstup sa zobrazí, ak spustíte súbor HTML, ktorý je vytvorený v predchádzajúcom kroku z webového servera.
Otvorte konfiguračné dialógové okno v ponuke Spustiť editora PyCharm a nastavte hodnotu argumentu príkazového riadku. Pole Parameters sa používa na nastavenie argumentu príkazového riadku a tu sa nastaví 3000 ako hodnota argumentu.
Nasledujúci výstup sa zobrazí, ak skript znovu spustíte po nastavení hodnoty argumentu.
Príklad 3: Spustite webový server so súborom HTML
Vytvorte súbor python s nasledujúcim skriptom na spustenie webového servera definovaním súboru HTML pre základnú adresu URL. Názov hostiteľa a číslo portu sú definované na začiatku skriptu. PythonServer trieda definovala v skripte zobrazenie súboru HTML v prehliadači, keď sa webový server spustí.
# Importujte modul serveraimportovať http.server
# Nastavte názov hostiteľa
HOST = "localhost"
# Nastavte číslo portu
PORT = 4 000
# Definujte triedu na zobrazenie indexovej stránky webového servera
trieda PythonServer (http.server.SimpleHTTPRequestHandler):
def do_GET (vlastné):
ak ja.cesta == '/':
ja.cesta = 'testHTML.html '
vrátiť http.server.SimpleHTTPRequestHandler.do_GET (ja)
# Deklarujte objekt triedy
webový server = http.server.HTTPServer ((HOST, PORT), PythonServer)
# Vytlačte adresu URL webového servera
print ("Server spustený http: //% s:% s"% (HOST, PORT))
skúste:
# Spustite webový server
webový server.serve_forever ()
okrem KeyboardInterrupt:
# Zastavte webový server
webový server.server_close ()
print ("Server je zastavený.„)
Výkon
Po vykonaní vyššie uvedeného skriptu sa objaví nasledujúci výstup.
Nasledujúca stránka sa zobrazí v prehliadači, ak sa vykoná základná adresa URL webového servera.
Záver
Rôzne spôsoby implementácie webových serverov pomocou http. server Modul v tejto príručke ukázal, ako pomôcť používateľom pythonu vytvoriť jednoduchý webový server v Pythone.