У меня есть HTTP-сервер Python (2.7.13), работающий в Debian, я хочу остановить любой запрос GET, который занимает больше 10 секунд, но нигде не могу найти решение.
Я уже пробовал все фрагменты, опубликованные в следующем вопросе: Как реализовать Timeout в BaseHTTPServer.BaseHTTPRequestHandler Python
#!/usr/bin/env python
from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
import os
class handlr(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header('Content-type','text-html')
self.end_headers()
self.wfile.write(os.popen('sleep 20 & echo "this took 20 seconds"').read())
def run():
server_address = ('127.0.0.1', 8080)
httpd = HTTPServer(server_address, handlr)
httpd.serve_forever()
if __name__ == '__main__':
run()
В качестве теста я запускаю команду оболочки, выполнение которой занимает 20 секунд, поэтому мне нужно, чтобы сервер остановился перед этим.