Как можно правильно оформить обработчик запросов в HTTP-сервере?
Имею такой вот хттп-сервер на питоне (весь код будет ниже). Передо мной стоит задача: необходимо при загрузке определённой страницы (скажем index.html) делать определённые действия (скажем, вызывать time.sleep() и "засыпать" на какое-то время). Насколько я понимаю, необходимо правильно описать do_GET() метод. Но каким таким образом? Может ли кто-нибудь направить меня на пусть истинный?
import http.server, socketserver, os
import _thread as thread
PORT = 8000
DIR = '/home/root/dir'
ADDRESS = '127.0.0.1'
class Handler(http.server.SimpleHTTPRequestHandler):
def _set_headers(self):
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
def do_GET(self):
self._set_headers()
http.server.SimpleHTTPRequestHandler.do_GET(self)
def do_POST(self):
if self.path.startswith('/kill_server'):
def kill_me_please(server):
server.shutdown()
thread.start_new_thread(kill_me_please, (httpd,))
self.send_error(500)
class MyHTTPServer(socketserver.TCPServer):
def server_bind(self):
import socket
self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
self.socket.bind(self.server_address)
os.chdir(DIR)
server_address = (ADDRESS, PORT)
httpd = MyHTTPServer(server_address, Handler)
try:
httpd.serve_forever()
finally:
httpd.server_close()
Ответы (1 шт):
Автор решения: Damien Damie Amfiet
→ Ссылка
def do_GET(self):
if self.path.endswith('/test.html'):
time.sleep(60)
else:
self._set_headers()
http.server.SimpleHTTPRequestHandler.do_GET(self)
а вот так