Это то, что у меня есть:Как перезапустить экземпляр BaseHTTPServer?
http.py:
class HTTPServer():
def __init__(self, port):
self.port = port
self.thread = None
self.run = True
def serve(self):
self.thread = threading.Thread(target=self._serve)
self.thread.start()
def _serve(self):
serverAddress = ("", self.port)
self.server = MyBaseHTTPServer(serverAddress,MyRequestHandler)
logging.log(logging.INFO, "HTTP server started on port %s"%self.port)
while self.run:
self.server.handle_request()
def stop(self):
self.run = False
self.server.server_close()
Затем в другом файле, чтобы перезапустить его:
def restartHTTP(self):
try:
self.httpserver.stop()
reload(http)
self.httpserver = http.HTTPServer(80)
self.httpserver.serve()
except:
traceback.print_exc()
Это дает мне адрес уже ошибки использования, так кажется, что HTTP-сервер не останавливается должным образом. Что еще мне нужно сделать, чтобы остановить его?
EDIT:
Где я называю restartHTTP:
def commandHTTPReload(self, parts, byuser, overriderank):
self.client.factory.restartHTTP()
self.client.sendServerMessage("HTTP server reloaded.")
Я знаю, команда выполняется, потому что я получаю сообщение, что, как предполагается отправить.
И поместите код, где вы вызываете restartHTTP. – Denis
Вы действительно начали сервер на порту 80? – Triptych
Да, я уверен, что это тот же порт, что и раньше. – Joseph