Python - HTTP Sunucusu

Python standart kitaplığı, basit web istemcisi sunucu iletişimi için çağrılabilen yerleşik bir web sunucusuyla birlikte gelir. Bağlantı noktası numarası programlı olarak atanabilir ve web sunucusuna bu bağlantı noktası üzerinden erişilebilir. Pek çok dosya türünü ayrıştırabilen tam özellikli bir web sunucusu olmasa da, basit statik html dosyalarını ayrıştırabilir ve gerekli yanıt kodlarıyla yanıtlayarak hizmet verebilir.

Aşağıdaki program basit bir web sunucusunu başlatır ve 8001 numaralı bağlantı noktasında açar. Sunucunun başarılı çalışması, program çıktısında gösterildiği gibi 200 yanıt kodu ile gösterilir.

import SimpleHTTPServer
import SocketServer
PORT = 8001
Handler = SimpleHTTPServer.SimpleHTTPRequestHandler
httpd = SocketServer.TCPServer(("", PORT), Handler)
print "serving at port", PORT
httpd.serve_forever()

Yukarıdaki programı çalıştırdığımızda aşağıdaki çıktıyı alıyoruz -

serving at port 8001
127.0.0.1 - - [14/Jun/2018 08:34:22] "GET / HTTP/1.1" 200 -

Yerel ana bilgisayar hizmeti

Python sunucusunu yalnızca yerel ana bilgisayara hizmet veren yerel bir ana bilgisayar yapmaya karar verirsek, bunu yapmak için aşağıdaki programı kullanabiliriz.

import sys
import BaseHTTPServer
from SimpleHTTPServer import SimpleHTTPRequestHandler
HandlerClass = SimpleHTTPRequestHandler
ServerClass  = BaseHTTPServer.HTTPServer
Protocol     = "HTTP/1.0"
if sys.argv[1:]:
    port = int(sys.argv[1])
else:
    port = 8000
server_address = ('127.0.0.1', port)
HandlerClass.protocol_version = Protocol
httpd = ServerClass(server_address, HandlerClass)
sa = httpd.socket.getsockname()
print "Serving HTTP on", sa[0], "port", sa[1], "..."
httpd.serve_forever()

Yukarıdaki programı çalıştırdığımızda aşağıdaki çıktıyı alıyoruz -

Serving HTTP on 127.0.0.1 port 8000 ...