У меня есть сценарий Python, который реализует встроенный веб-сервер:Python BaseHTTPServer - избежать ошибок («сброс соединения пэра» и т.д.) от разрушения проклятий дисплея
class http_server(BaseHTTPRequestHandler):
def log_message(self, format, *args):
# prevent the BaseHTTPServer log messages, we use our own logging instead
return
def do_GET(self):
log("responding to http request from %s: %s" % (self.client_address[0], self.path))
text_string = "Hello World"
self.send_response(200)
self.send_header("Content-type", "text/plain")
self.send_header("Content-Length", len(text_string))
self.end_headers()
self.wfile.write(text_string)
def start_server():
try:
httpd = SocketServer.TCPServer(("", 8888), http_server)
httpd.serve_forever()
except Exception as e:
cleanup(None, None)
print "Error starting internal http server: %s" % repr(e)
sys.exit(1)
# main script
# does various things, initializes curses, etc.
start_server()
Это прекрасно работает, однако проблема заключается в том, что скрипт python также реализует экранное отображение состояния с использованием проклятий, запущенных в другом потоке. Когда на HTTP-сервере возникает ошибка (например, «сброс соединения с помощью одноранговой сети» и т. Д.), Трассировка питона, указывающая на указанную ошибку, разбрызгивается по моему хорошему отображению проклятий.
Я попытался добавить try...exception
блоков вокруг do_GET
части моего BaseHTTPRequestHandler
класса, но это не имело никакого эффекта.
Как отключить сообщения трассировки Python в этом коде?
Спасибо, что, кажется, сделали трюк! –