Last active
January 25, 2022 09:43
-
-
Save tomazas/7b323554b601e8d606ae5069c3fa58a1 to your computer and use it in GitHub Desktop.
Python 3 multi-threaded HTTP server implementing GET & POST on port 8080
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Python 3 multi-threaded HTTP server implementing GET & POST on port 8080 | |
# Tested using Python 3.10.1 | |
# run using below run.sh bash script: | |
''' | |
#!/bin/bash | |
nohup /usr/bin/python -u http_server.py > server.log 2>&1 & | |
echo $! > pid | |
''' | |
# stop using below stop.sh bash script: | |
''' | |
#!/bin/bash | |
kill -9 `cat pid` | |
rm pid | |
''' | |
import http.server | |
from http.server import ThreadingHTTPServer | |
import socketserver | |
import sys | |
# config | |
hostName = "0.0.0.0" | |
serverPort = 8080 | |
payload = "<html><head></head><body><h2>%s<br/>Server node reached successfully</h2></body></html>" | |
class Handler(http.server.BaseHTTPRequestHandler): | |
def setup(self): | |
self.timeout = 2 # socket read timeout in seconds | |
http.server.BaseHTTPRequestHandler.setup(self) | |
def respond(self, title): | |
self.sys_version = "1.0" | |
self.server_version = "HTTPS Server" # preven python version leak | |
self.close_connection = True # ensure threads close the socket | |
self.send_response(200) | |
self.send_header('Content-type', 'text/html') | |
self.end_headers() | |
self.wfile.write(str.encode(payload%title)) | |
def do_GET(self): | |
self.respond("HTTP GET") | |
def do_POST(self): | |
content_len = int(self.headers.get('Content-Length', 0)) | |
post_body = self.rfile.read(content_len) | |
self.respond("HTTP POST") | |
print("starting %s:%d"%(hostName, serverPort)) | |
httpd = ThreadingHTTPServer((hostName, serverPort), Handler) | |
httpd.serve_forever() | |
print("done") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment