Verkkopalvelimen päätehtävä on käsitellä asiakkaan HTTP-pyyntöjä. Se odottaa tietyltä IP-osoitteelta ja porttinumerolta tulevia HTTP-pyyntöjä, käsittelee pyynnön ja lähettää asiakkaan vastauksen takaisin. Python käyttää SimpleHTTPS-palvelin moduulin luoda verkkopalvelin välittömästi ja helposti palvelemaan tiedoston sisältöä palvelimelta. Sitä voidaan käyttää myös tiedostojen jakamiseen. Tätä varten sinun on otettava tämä moduuli käyttöön jaettavien tiedostojen sijainnilla. Tämän moduulin mukana tulee Python-tulkki. Sinun ei tarvitse asentaa sitä. Koska tämä moduuli on sulautettu http.palvelin moduuli python3: ssa, joten sinun on suoritettava http.palvelin suorittaa verkkopalvelin python3: ssa. Kuinka web-palvelinta voidaan käyttää HTTP-pyyntöjen käsittelemiseen ja tiedostojen jakamiseen, on esitetty tässä opetusohjelmassa.
Suorita Web-palvelin terminaalista
Suorita seuraava komento suorittaaksesi verkkopalvelimen päätelaitteesta. Jos komennossa ei ole määritetty porttinumeroa, verkkopalvelin alkaa oletusarvoisesti 8000 portista.
$ python3 -m http.palvelin
Seuraava tulos tulee näkyviin, jos verkkopalvelin käynnistetään oikein. Pysäytä palvelin painamalla CTRL + C.
Käynnistä verkkopalvelin 8080-portissa suorittamalla seuraava komento.
Seuraava tulos tulee näkyviin, jos verkkopalvelin käynnistetään 8080-portissa.
Suorita verkkopalvelin Python-komentosarjalla
Luo kansio nimeltä suorittamalla seuraavat komennot verkko ja siirry kansioon. Kaikki tämän opetusohjelman komentotiedostot ja HTML-tiedostot luodaan tähän kansioon.
$ mkdir -verkko$ cd -verkko
Luo HTML-tiedosto nimeltä testHTML.html sisällä verkko kansio, jossa on seuraava komentosarja. Tämä tiedosto toimitetaan verkkopalvelimelta myöhemmin.
testHTML.html
Testaa Python-verkkopalvelin
Onnittelut! Verkkopalvelimesi toimii onnistuneesti.
Vierailla LinuxHint.com lisää Python-oppaita
Esimerkki 1: Suorita verkkopalvelin tietyssä portin numerossa
Luo python-tiedosto seuraavalla komentosarjalla suorittaaksesi palvelimen 8008-portissa. http.palvelin moduuli on tuotu web-palvelimen suorittamiseksi, ja SocketServer moduuli on tuotu käsittelemään 8080-portista tulevaa HTTP-pyyntöä. Nimetty objekti Käsittelijä on luotu käsittelemään HTTP-pyyntöjä. ikuisesti() -toimintoa kutsutaan suorittamaan verkkopalvelin. Komentosarjaan ei ole lisätty lopetusehtoja. Joten komentosarja luo virheen, kun käyttäjä yrittää pysäyttää palvelimen.
# Tuo palvelinmoduulituo http.palvelin
# Tuo SocketServer-moduuli
tuo pistorasiapalvelin
# Aseta portin numero
portti = 8080
# Luo objekti HTTP-pyyntöjen käsittelemiseksi
Käsittelijä = http.palvelin.YksinkertainenHTTPRequestHandler
# Suorita palvelin ikuisesti käsitelläksesi HTTP-pyyntöjä
pistorasialla.TCPServer (("", portti, Handler) nimellä httpd:
tulosta ("Verkkopalvelin on käynnissä osoitteessa http: // localhost:% s"% portti)
httpd.serve_forever ()
Tuotos
Seuraava lähtö tulee näkyviin yllä olevan komentosarjan suorittamisen jälkeen.
Luettelo komentosarjan sijainnin tiedostoista ja kansioista näkyy, jos seuraava URL-osoite suoritetaan selaimesta.
Jos käyttäjä painaa CTRL + C päätelaitteesta tai painaa pysäytyspainiketta PyCharm-editorista, seuraava virhesanoma tulee näkyviin. Tämä ongelma on ratkaistu tämän opetusohjelman seuraavassa esimerkissä.
Esimerkki 2: Suorita verkkopalvelin komentorivillä määritetyllä portin numerolla
Luo python-tiedosto seuraavalla komentosarjalla Web-palvelimen suorittamiseksi tietyssä portissa, jos komentoriviargumentti antaa portin numeron; muuten 5000 käytetään oletusporttina. sys moduuli on tuotu komentosarjaan komentoriviargumenttien lukemista varten. yritä lukuun ottamatta lohko on lisätty komentosarjaan käsittelemään virhettä, kun käyttäjä yrittää pysäyttää palvelimen. Jos KeyboardInterrupt-poikkeus näkyy palvelimen suorittamisen jälkeen, kiinni() toiminto kutsutaan pysäyttämään verkkopalvelin.
# Tuo palvelinmoduulituo http.palvelin
# Tuo SocketServer-moduuli
tuo pistorasiapalvelin
# Tuo järjestelmän moduuli
tuoda sys
yrittää:
# Aseta portin numero
jos sys.argv [1:]:
portti = int (sys.argv [1])
muu:
portti = 5000
# Aseta IP-osoite
palvelimen osoite = ('127.0.0.1 ', portti)
# Luo objekti HTTP-pyyntöjen käsittelemiseksi
Käsittelijä = http.palvelin.YksinkertainenHTTPRequestHandler
# Suorita verkkopalvelin ikuisesti käsitelläksesi HTTP-pyyntöjä
pistorasialla.TCPServer (("", portti, Handler) nimellä httpd:
tulosta ("Verkkopalvelin on käynnissä osoitteessa http: // localhost:% s"% portti)
httpd.serve_forever ()
# Pysäytti palvelimen
paitsi KeyboardInterrupt:
httpd.palvelimen_sulje ()
print ("Palvelin on pysäytetty.")
Tuotos
Seuraava lähtö näkyy, kun yllä oleva komentosarja on suoritettu ilman komentoriviargumenttia.
Seuraava tulos tulee näkyviin, jos suoritat HTML-tiedoston, joka on luotu edellisessä vaiheessa verkkopalvelimesta.
Aseta komentoriviargumentin arvo avaamalla määritysvalintaikkuna PyCharm-editorin Suorita-valikosta. Parameters-kenttää käytetään asettamaan komentoriviargumentti, ja 3000 asetetaan tässä argumentin arvoksi.
Seuraava tulos tulee näkyviin, jos suoritat komentosarjan uudelleen argumentin arvon asettamisen jälkeen.
Esimerkki 3: Suorita verkkopalvelin HTML-tiedostolla
Luo python-tiedosto seuraavalla komentosarjalla, jotta voit suorittaa verkkopalvelimen määrittelemällä HTML-tiedoston perus-URL-osoitteelle. Isäntänimi ja portin numero on määritelty komentosarjan alussa. PythonServer class on määritellyt komentosarjassa näyttämään HTML-tiedoston selaimessa, kun verkkopalvelin alkaa toimia.
# Tuo palvelinmoduulituo http.palvelin
# Aseta isäntänimi
HOST = "paikallinen isäntä"
# Aseta portin numero
PORTTI = 4000
# Määritä luokka Web-palvelimen hakemistosivun näyttämiseksi
luokka PythonServer (http.palvelin.SimpleHTTPRequestHandler):
def do_GET (itse):
jos itse.polku == '/':
itse.polku = 'testHTML.html '
palauta http.palvelin.YksinkertainenHTTPRequestHandler.do_GET (itse)
# Ilmoita luokan esine
webServer = http.palvelin.HTTPServer ((HOST, PORT), PythonServer)
# Tulosta verkkopalvelimen URL-osoite
tulosta ("Palvelin aloitti http: //% s:% s"% (HOST, PORT))
yrittää:
# Suorita verkkopalvelin
verkkopalvelin.serve_forever ()
paitsi KeyboardInterrupt:
# Pysäytä verkkopalvelin
verkkopalvelin.palvelimen_sulje ()
print ("Palvelin on pysäytetty.")
Tuotos
Seuraava tulos tulee näkyviin suorittamalla yllä oleva komentosarja.
Seuraava sivu näkyy selaimessa, jos selaimen peruspalvelimen URL-osoite suoritetaan.
Johtopäätös
Eri tapoja toteuttaa web-palvelimia käyttämällä http. palvelin Tässä opetusohjelmassa moduuli on auttanut python-käyttäjiä luomaan yksinkertaisen verkkopalvelimen Pythonissa.