Основната задача на уеб сървъра е да обработва HTTP заявките от клиента. Той изчаква HTTP заявките, идващи от конкретния IP адрес и номера на порта, обработва заявката и изпраща отговора на клиента обратно. Python използва SimpleHTTPServer модул за създаване на уеб сървър незабавно и лесно да обслужва съдържанието на файла от сървъра. Може да се използва и за споделяне на файлове. За това трябва да активирате този модул с местоположението на споделяните файлове. Този модул се доставя с интерпретатора на Python. Не е необходимо да го инсталирате. Тъй като този модул е обединен с http.сървър модул в python3, така че трябва да стартирате http.сървър за да стартирате уеб сървъра в python3. Как уеб сървърът може да се използва за обработка на HTTP заявки и споделяне на файлове, е показано в този урок.
Стартирайте уеб сървъра от терминала
Изпълнете следната команда, за да стартирате уеб сървъра от терминала. Ако в командата не е определен номер на порт, уеб сървърът ще започне по подразбиране на порт 8000.
$ python3 -m http.сървър
Следният изход ще се появи, ако уеб сървърът е стартиран правилно. CTRL + C се натиска, за да спре сървъра.
Изпълнете следната команда, за да стартирате уеб сървъра на 8080 порт.
Следният изход ще се появи, ако уеб сървърът е стартиран на порта 8080.
Стартирайте уеб сървъра, използвайки Python скрипт
Изпълнете следните команди, за да създадете папка с име уеб и отидете в папката. Всички скриптове и HTML файлове от този урок ще бъдат създадени в тази папка.
$ mkdir уеб$ cd уеб
Създайте HTML файл с име testHTML.html вътре в уеб папка със следния скрипт. Този файл ще бъде предоставен от уеб сървъра по-късно.
testHTML.html
Тествайте Python уеб сървъра
Поздравления! Вашият уеб сървър работи успешно.
Посетете LinuxHint.com за повече уроци по Python
Пример-1: Стартирайте уеб сървъра в конкретния номер на порт
Създайте файл на python със следния скрипт, за да стартирате уеб сървъра на 8008 порт. http.сървър модул е импортиран за стартиране на уеб сървъра, а SocketServer модул е импортиран за обработка на HTTP заявката, идваща от 8080 порта. Обект с име Манипулатор е създаден за обработка на HTTP заявките. завинаги () функция се извиква за стартиране на уеб сървъра. Към скрипта не е добавено условие за прекратяване. Така че, скриптът ще генерира грешка, когато потребителят се опита да спре сървъра.
# Импортиране на сървърния модулимпортиране на http.сървър
# Импортиране на модул SocketServer
импортиране на сокет сървър
# Задайте номера на порта
порт = 8080
# Създайте обект за обработка на HTTP заявки
Манипулатор = http.сървър.SimpleHTTPRequestHandler
# Стартирайте сървъра завинаги, за да обработвате HTTP заявките
със сокет сървър.TCPServer (("", порт), манипулатор) като httpd:
print ("Уеб сървърът работи на http: // localhost:% s"% port)
httpd.serve_forever ()
Изход
След изпълнението на горния скрипт ще се появи следният изход.
Списъкът с файлове и папки на местоположението на скрипта ще се покаже, ако следният URL се изпълни от браузъра.
Ако потребителят натисне CTRL + C от терминала или натисне бутона за спиране от редактора на PyCharm, ще се покаже следното съобщение за грешка. Този проблем е решен в следващия пример на този урок.
Пример-2: Стартирайте уеб сървъра с номера на порта, дефиниран от командния ред
Създайте файл на python със следния скрипт, за да стартирате уеб сървър на конкретния порт, ако аргументът на командния ред дава номера на порта; в противен случай 5000 ще бъдат използвани като порт по подразбиране. sys модул е импортиран в скрипта за четене на стойностите на аргумента от командния ред. опитайте-освен блок е добавен в скрипта за обработка на грешката, когато потребителят се опитва да спре сървъра. Ако изключението KeyboardInterrupt се появи след стартиране на сървъра, тогава близо() ще бъде извикана функция за спиране на уеб сървъра.
# Импортиране на сървърния модулимпортиране на http.сървър
# Импортиране на модул SocketServer
импортиране на сокет сървър
# Импортиране на модул sys
импортиране на sys
опитвам:
# Задайте номера на порта
ако sys.argv [1:]:
port = int (sys.argv [1])
друго:
порт = 5000
# Задайте IP адреса
server_address = ('127.0.0.1 ', порт)
# Създайте обект за обработка на HTTP заявки
Манипулатор = http.сървър.SimpleHTTPRequestHandler
# Стартирайте уеб сървъра завинаги, за да обработвате HTTP заявките
със сокет сървър.TCPServer (("", порт), манипулатор) като httpd:
print ("Уеб сървърът работи на http: // localhost:% s"% port)
httpd.serve_forever ()
# Спря сървъра
с изключение на KeyboardInterrupt:
httpd.server_close ()
print ("Сървърът е спрян.")
Изход
Следният изход ще се появи след изпълнение на горния скрипт без стойност на аргумента на командния ред.
Следният изход ще се появи, ако стартирате HTML файла, който е създаден в предишната стъпка от уеб сървъра.
Отворете диалоговия прозорец за конфигуриране от менюто Изпълнение на редактора на PyCharm, за да зададете стойността на аргумента на командния ред. Полето Параметри се използва за задаване на аргумента на командния ред и 3000 е зададено тук като стойност на аргумента.
Следният изход ще се появи, ако стартирате скрипта отново след задаване на стойността на аргумента.
Пример-3: Стартирайте уеб сървъра с HTML файла
Създайте файл на python със следния скрипт, за да стартирате уеб сървъра, като дефинирате HTML файла за основния URL адрес. Името на хоста и номерът на порта са дефинирани в началото на скрипта. PythonServer class е дефинирал в скрипта да показва HTML файла в браузъра, когато уеб сървърът започне да работи.
# Импортирайте сървърния модулимпортиране на http.сървър
# Задайте името на хоста
HOST = "localhost"
# Задайте номера на порта
ПОРТ = 4000
# Определете клас за показване на индексната страница на уеб сървъра
клас PythonServer (http.сървър.SimpleHTTPRequestHandler):
def do_GET (самостоятелно):
ако аз.път == '/':
себе си.път = 'тестHTML.html '
връщане http.сървър.SimpleHTTPRequestHandler.do_GET (самостоятелно)
# Декларирайте обект на класа
webServer = http.сървър.HTTPServer ((HOST, PORT), PythonServer)
# Отпечатайте URL адреса на уеб сървъра
print ("Сървърът стартира http: //% s:% s"% (HOST, PORT))
опитвам:
# Стартирайте уеб сървъра
уеб сървър.serve_forever ()
с изключение на KeyboardInterrupt:
# Спрете уеб сървъра
уеб сървър.server_close ()
print ("Сървърът е спрян.")
Изход
Ще се появи следният изход, изпълняващ горния скрипт.
Следващата страница ще се появи в браузъра, ако се изпълни основният URL адрес на уеб сървъра на браузъра.
Заключение
Различните начини за внедряване на уеб сървъри чрез използване http. сървър модул е показан в този урок, за да помогне на потребителите на python да създадат прост уеб сървър в Python.