Kā lietot Python SimpleHTTPServer

How Use Python Simplehttpserver



Tīmekļa servera galvenais uzdevums ir apstrādāt klienta HTTP pieprasījumus. Tā gaida HTTP pieprasījumus, kas nāk no konkrētās IP adreses un porta numura, apstrādā pieprasījumu un nosūta atpakaļ klienta atbildi. Python izmanto Vienkāršs HTTPServer moduli, lai uzreiz izveidotu tīmekļa serveri un viegli apkalpotu faila saturu no servera. To var izmantot arī failu koplietošanai. Lai to izdarītu, jums ir jāiespējo šis modulis ar koplietojamo failu atrašanās vietu. Šim modulim ir Python tulks. Jums tas nav jāinstalē. Tā kā šis modulis ir apvienots ar http.serveris modulis python3, tāpēc jums ir jāskrien http.serveris palaist tīmekļa serveri python3. Šajā apmācībā ir parādīts, kā tīmekļa serveri var izmantot, lai apstrādātu HTTP pieprasījumus un koplietotu failus.

Palaidiet Web serveri no termināļa

Palaidiet šādu komandu, lai palaistu tīmekļa serveri no termināļa. Ja komandā nav definēts porta numurs, tīmekļa serveris pēc noklusējuma sāksies no 8000 porta.







$ python3 -m http.serveris



Ja tīmekļa serveris ir pareizi startēts, parādīsies šāda izvade. CTRL+C tiek nospiests, lai apturētu serveri.




Palaidiet šo komandu, lai palaistu tīmekļa serveri 8080 portā.





$ python3 -m http.serveris 8080

Ja tīmekļa serveris tiek palaists 8080 portā, parādīsies šāda izvade.



Palaidiet tīmekļa serveri, izmantojot Python skriptu

Palaidiet tālāk norādītās komandas, lai izveidotu mapi ar nosaukumu Tīmeklis un dodieties uz mapi. Visi šīs apmācības skriptu faili un HTML faili tiks izveidoti šajā mapē.

$ mkdir tīmeklis

$CDTīmeklis

Izveidojiet HTML failu ar nosaukumu testHTML.html iekšpusē Tīmeklis mape ar šādu skriptu. Šis fails vēlāk tiks pasniegts no tīmekļa servera.

testHTML.html

< html >

< galvu >

< titulu >

Pārbaudiet Python tīmekļa serveri

</ titulu >

</ galvu >

< ķermenis >

< centrā >

< img src='logo.jpeg' viss='Attēls nav atrasts'/>

< h2 stils='krāsa: zaļa'>Apsveicam! Jūsu tīmekļa serveris darbojas veiksmīgi.</ h2 >

< lpp >Apmeklējums< uz href='www.linuxhint.com'>LinuxHint.com</ uz >lai iegūtu vairāk pamācību par Python</ lpp >

</ centrā >

</ ķermenis >

</ html >

1. piemērs: palaidiet tīmekļa serveri ar konkrētu porta numuru

Izveidojiet pitona failu ar šādu skriptu, lai palaistu tīmekļa serveri 8008 portā. http.serveris modulis ir importēts, lai palaistu tīmekļa serveri, un SocketServer modulis ir importēts, lai apstrādātu HTTP pieprasījumu, kas nāk no porta 8080. Objekts ar nosaukumu Hendlers ir izveidots, lai apstrādātu HTTP pieprasījumus. uz visiem laikiem () funkcija tiek izsaukta, lai palaistu tīmekļa serveri. Skriptam nav pievienots pārtraukšanas nosacījums. Tātad, skripts radīs kļūdu, kad lietotājs mēģinās apturēt serveri.

# Importēt servera moduli

importēthttp.serveris

# Importēt SocketServer moduli

importētligzdas serveris


# Iestatiet porta numuru

osta= 8080

# Izveidojiet objektu HTTP pieprasījumu apstrādei

Hendlers=http.serveris.VienkāršsHTTPRequestHandler


# Palaidiet serveri uz visiem laikiem, lai apstrādātu HTTP pieprasījumus

arligzdas serveris.TCPServer(('',osta),Hendlers) httpd:

drukāt('Tīmekļa serveris darbojas vietnē http: // localhost:%s'%ports)

httpd.serve_forever()

Izeja

Pēc iepriekš minētā skripta izpildes tiks parādīta šāda izvade.


Skripta atrašanās vietas failu un mapju saraksts tiks parādīts, ja no pārlūka tiks izpildīts šāds URL.

http: // localhost: 8080

Ja lietotājs no termināļa nospiež CTRL+C vai no PyCharm redaktora nospiež apturēšanas pogu, tiks parādīts šāds kļūdas ziņojums. Šī problēma ir atrisināta nākamajā šīs apmācības piemērā.

2. piemērs: palaidiet tīmekļa serveri ar porta numuru, kas noteikts komandrindā

Izveidojiet pitona failu ar šādu skriptu, lai palaistu tīmekļa serveri konkrētajā ostā, ja komandrindas arguments norāda porta numuru; pretējā gadījumā 5000 tiks izmantots kā noklusējuma ports. sys modulis ir importēts skriptā, lai izlasītu komandrindas argumentu vērtības. mēģiniet-izņemot skriptam ir pievienots bloks, lai novērstu kļūdu, kad lietotājs mēģina apturēt serveri. Ja pēc servera palaišanas parādās KeyboardInterrupt izņēmums, tad aizvērt () tiks izsaukta funkcija, lai apturētu tīmekļa serveri.

# Importēt servera moduli

importēthttp.serveris

# Importēt SocketServer moduli

importētligzdas serveris

# Importēt sistēmas moduli

importēt sys


pamēģini:

# Iestatiet porta numuru

ja sys.argv[1:]:

osta= int(sys.argv[1])

citādi:

osta= 5000

# Iestatiet IP adresi

servera_adrese= (“127.0.0.1”,osta)

# Izveidojiet objektu HTTP pieprasījumu apstrādei

Hendlers=http.serveris.VienkāršsHTTPRequestHandler


# Palaidiet tīmekļa serveri uz visiem laikiem, lai apstrādātu HTTP pieprasījumus

arligzdas serveris.TCPServer(('',osta),Hendlers) httpd:

drukāt('Tīmekļa serveris darbojas vietnē http: // localhost:%s'%ports)

httpd.serve_forever()

# Apturēja serveri

izņemot Tastatūra:

httpd.server_close()

drukāt('Serveris ir apturēts.')

Izeja

Pēc iepriekš minētā skripta izpildīšanas bez komandrindas argumenta vērtības tiks parādīta šāda izvade.

Ja tiek palaists HTML fails, kas izveidots iepriekšējā darbībā no tīmekļa servera, tiks parādīta šāda izvade.

PyCharm redaktora izvēlnē Palaist atveriet konfigurācijas dialoglodziņu, lai iestatītu komandrindas argumenta vērtību. Parametru lauks tiek izmantots, lai iestatītu komandrindas argumentu, un 3000 šeit ir iestatīts kā argumenta vērtība.

Ja pēc argumenta vērtības iestatīšanas skriptu palaidīsit vēlreiz, parādīsies šāda izvade.

3. piemērs: palaidiet tīmekļa serveri ar HTML failu

Izveidojiet pitona failu ar šādu skriptu, lai palaistu tīmekļa serveri, definējot pamata URL HTML failu. Resursdatora nosaukums un porta numurs ir definēti skripta sākumā. PythonServer class skriptā ir definējusi tā, lai pārlūkprogrammā tiktu parādīts HTML fails, kad tīmekļa serveris sāk darboties.

# Importējiet servera moduli

importēthttp.serveris


# Iestatiet saimniekdatora nosaukumu

VADĪTĀJS= 'vietējais saimnieks'

# Iestatiet porta numuru

Ostas= 4000


# Definējiet klasi, lai tiktu parādīta tīmekļa servera indeksa lapa

klasePythonServer(http.serveris.VienkāršsHTTPRequestHandler):

defdo_GET(sevi):

ja sevi.ceļš == '/':

sevi.ceļš = 'testHTML.html'

atgrieztieshttp.serveris.VienkāršsHTTPRequestHandler.do_GET(sevi)


# Deklarējiet klases objektu

webServer=http.serveris.HTTPServer((VADĪTĀJS,Ostas),PythonServer)


# Izdrukājiet tīmekļa servera URL

drukāt('Serveris startēja http: //%s:%s'%(VADĪTĀJS,Ostas))


pamēģini:

# Palaidiet tīmekļa serveri

webServer.serve_forever()

izņemot Tastatūra:

# Apturiet tīmekļa serveri

webServer.server_close()

drukāt('Serveris ir apturēts.')

Izeja

Tiks parādīta šāda izvade, izpildot iepriekš minēto skriptu.

Nākamā lapa tiks parādīta pārlūkprogrammā, ja tiks izpildīts tīmekļa servera pārlūka bāzes URL.

Secinājums

Dažādi tīmekļa serveru ieviešanas veidi, izmantojot http. serveris modulis ir parādīts šajā apmācībā, lai palīdzētu python lietotājiem izveidot vienkāršu tīmekļa serveri Python.