Kaip naudotis „Python SimpleHTTPServer“

How Use Python Simplehttpserver



Pagrindinė žiniatinklio serverio užduotis yra apdoroti kliento HTTP užklausas. Jis laukia HTTP užklausų, gautų iš konkretaus IP adreso ir prievado numerio, tvarko užklausą ir siunčia atgal kliento atsakymą. „Python“ naudoja Paprastas HTTPServeris modulį, kad akimirksniu sukurtumėte žiniatinklio serverį ir lengvai pateiktumėte failo turinį iš serverio. Jis taip pat gali būti naudojamas dalintis failais. Norėdami tai padaryti, turite įjungti šį modulį, nurodydami bendrinamų failų vietą. Šiame modulyje yra „Python“ vertėjas. Jums nereikia jo įdiegti. Kadangi šis modulis yra sujungtas su http.serveris modulis python3, todėl jūs turite paleisti http.serveris paleisti žiniatinklio serverį „python3“. Šiame vadove buvo parodyta, kaip žiniatinklio serveris gali būti naudojamas HTTP užklausoms tvarkyti ir dalintis failais.

Paleiskite žiniatinklio serverį iš terminalo

Vykdykite šią komandą, kad paleistumėte žiniatinklio serverį iš terminalo. Jei komandoje nenustatytas prievado numeris, pagal numatytuosius nustatymus žiniatinklio serveris pradės veikti nuo 8000 prievadų.







$ python3 -m http.serveris



Tinkamai paleidus žiniatinklio serverį bus rodoma ši išvestis. Norėdami sustabdyti serverį, paspauskite CTRL+C.




Vykdykite šią komandą, kad paleistumėte žiniatinklio serverį 8080 prievadu.





$ python3 -m http.serveris 8080

Toliau nurodyta išvestis bus rodoma, jei žiniatinklio serveris bus paleistas prie 8080 prievado.



Paleiskite žiniatinklio serverį naudodami „Python“ scenarijų

Norėdami sukurti aplanką pavadinimu, paleiskite šias komandas Žiniatinklis ir eikite į aplanką. Visi šio vadovo scenarijaus ir HTML failai bus sukurti šiame aplanke.

$ mkdir žiniatinklis

$CDŽiniatinklis

Sukurkite HTML failą pavadinimu testHTML.html viduje Žiniatinklis aplanką su šiuo scenarijumi. Šis failas vėliau bus pateiktas iš žiniatinklio serverio.

testHTML.html

< html >

< galva >

< titulas >

Išbandykite „Python“ žiniatinklio serverį

</ titulas >

</ galva >

< kūnas >

< centre >

< img src='logo.jpeg' viskas='Vaizdas nerastas'/>

< h2 stilius='spalva: žalia'>Sveikinu! Jūsų žiniatinklio serveris sėkmingai veikia.</ h2 >

< p >Aplankykite< į href=„www.linuxhint.com“>LinuxHint.com</ į >daugiau pamokų apie „Python“</ p >

</ centre >

</ kūnas >

</ html >

1 pavyzdys: paleiskite žiniatinklio serverį konkrečiu prievado numeriu

Sukurkite „Python“ failą naudodami šį scenarijų, kad paleistumėte žiniatinklio serverį 8008 prievadu. http.serveris modulis buvo importuotas paleisti žiniatinklio serverį, o „SocketServer“ modulis buvo importuotas apdoroti HTTP užklausą, gaunamą iš 8080 prievado. Objektas pavadintas Tvarkytojas buvo sukurtas HTTP užklausoms apdoroti. amžinai () funkcija paleidžiama paleisti žiniatinklio serverį. Prie scenarijaus nebuvo pridėta jokių nutraukimo sąlygų. Taigi, scenarijus sukels klaidą, kai vartotojas bandys sustabdyti serverį.

# Importuoti serverio modulį

importashttp.serveris

# Importuoti „SocketServer“ modulį

importaslizdo serveris


# Nustatykite prievado numerį

uostas= 8080

# Sukurkite HTTP užklausų tvarkymo objektą

Tvarkytojas=http.serveris.SimpleHTTPRequestHandler


# Vykdykite serverį amžinai, kad galėtumėte tvarkyti HTTP užklausas

sulizdo serveris.TCPServer(('',uostas),Tvarkytojas) kaiphttpd:

spausdinti(„Žiniatinklio serveris veikia adresu http: // localhost:%s“%prievadas)

httpd.tarnauti_visam laikui()

Išvestis

Įvykdžius aukščiau pateiktą scenarijų, bus rodoma ši išvestis.


Failų ir aplanko, esančių scenarijaus vietoje, sąrašas bus rodomas, jei iš naršyklės bus vykdomas šis URL.

http: // localhost: 8080

Jei vartotojas paspaudžia CTRL+C iš terminalo arba paspaudžia sustabdymo mygtuką iš „PyCharm“ redaktoriaus, bus rodomas toks klaidos pranešimas. Ši problema išspręsta kitame šios pamokos pavyzdyje.

2 pavyzdys: paleiskite žiniatinklio serverį naudodami prievado numerį, apibrėžtą komandinėje eilutėje

Sukurkite „Python“ failą naudodami šį scenarijų, kad paleistumėte žiniatinklio serverį tam tikrame uoste, jei komandinės eilutės argumentas nurodo prievado numerį; priešingu atveju 5000 bus naudojamas kaip numatytasis prievadas. sys modulis buvo importuotas į scenarijų, kad būtų galima perskaityti komandinės eilutės argumentų reikšmes. pabandykite-išskyrus scenarijuje buvo pridėtas blokas, kad būtų pašalinta klaida, kai vartotojas bando sustabdyti serverį. Jei paleidus serverį atsiranda „KeyboardInterrupt“ išimtis, tada Uždaryti() bus iškviesta funkcija, skirta sustabdyti žiniatinklio serverį.

# Importuoti serverio modulį

importashttp.serveris

# Importuoti „SocketServer“ modulį

importaslizdo serveris

# Importuoti sys modulį

importas sys


bandyti:

# Nustatykite prievado numerį

jei sys.argv[1:]:

uostas= tarpt(sys.argv[1])

Kitas:

uostas= 5000

# Nustatykite IP adresą

serverio adresas= („127.0.0.1“,uostas)

# Sukurkite HTTP užklausų tvarkymo objektą

Tvarkytojas=http.serveris.SimpleHTTPRequestHandler


# Visada paleiskite žiniatinklio serverį, kad galėtumėte tvarkyti HTTP užklausas

sulizdo serveris.TCPServer(('',uostas),Tvarkytojas) kaiphttpd:

spausdinti(„Žiniatinklio serveris veikia adresu http: // localhost:%s“%prievadas)

httpd.tarnauti_visam laikui()

# Sustabdė serverį

išskyrus Klaviatūra:

httpd.serverio_uždaryti()

spausdinti('Serveris sustabdytas.')

Išvestis

Šis rezultatas bus rodomas įvykdžius aukščiau pateiktą scenarijų be komandinės eilutės argumento vertės.

Toliau pateikiamas rezultatas bus rodomas, jei paleisite HTML failą, sukurtą ankstesniame žingsnyje iš žiniatinklio serverio.

„PyCharm“ redaktoriaus meniu „Vykdyti“ atidarykite konfigūracijos dialogo langą, kad nustatytumėte komandinės eilutės argumento vertę. Laukas „Parameters“ naudojamas komandinės eilutės argumentui nustatyti, o 3000 čia yra kaip argumento vertė.

Jei iš naujo nustatysite argumento vertę, scenarijus bus rodomas toliau.

3 pavyzdys: paleiskite žiniatinklio serverį su HTML failu

Sukurkite „Python“ failą naudodami šį scenarijų, kad paleistumėte žiniatinklio serverį, apibrėždami pagrindinio URL HTML failą. Pagrindinio kompiuterio pavadinimas ir prievado numeris buvo nustatyti scenarijaus pradžioje. „PythonServer“ klasė scenarijuje nustatė, kad naršyklėje būtų rodomas HTML failas, kai žiniatinklio serveris pradeda veikti.

# Importuokite serverio modulį

importashttp.serveris


# Nustatykite pagrindinio kompiuterio pavadinimą

VADOVAS= 'vietinis šeimininkas'

# Nustatykite prievado numerį

Uostas= 4000


# Nustatykite klasę, kad būtų rodomas žiniatinklio serverio rodyklės puslapis

klasė„PythonServer“(http.serveris.SimpleHTTPRequestHandler):

defdo_GET(savarankiškai):

jei savarankiškai.kelias == '/':

savarankiškai.kelias = 'testHTML.html'

grįžtihttp.serveris.SimpleHTTPRequestHandler.do_GET(savarankiškai)


# Paskelbti klasės objektą

Tinklapio serveris=http.serveris.HTTPServer((VADOVAS,Uostas),„PythonServer“)


# Atspausdinkite žiniatinklio serverio URL

spausdinti(„Serveris paleistas http: //%s:%s“%(VADOVAS,Uostas))


bandyti:

# Paleiskite žiniatinklio serverį

Tinklapio serveris.tarnauti_visam laikui()

išskyrus Klaviatūra:

# Sustabdykite žiniatinklio serverį

Tinklapio serveris.serverio_uždaryti()

spausdinti('Serveris sustabdytas.')

Išvestis

Bus rodomas toks išvestis vykdant aukščiau pateiktą scenarijų.

Toliau pateiktas puslapis bus rodomas naršyklėje, jei vykdomas pagrindinis naršyklės žiniatinklio serverio URL.

Išvada

Skirtingi žiniatinklio serverių diegimo būdai naudojant http. serveris modulis parodė šioje pamokoje, kad padėtų „python“ vartotojams sukurti paprastą žiniatinklio serverį „Python“.