Ich versuche, einen einfachen HTTP-Server in Python in einem Thread einzurichten.Warum stoppt dieser Thread in Python nicht?
class MyHandler(SimpleHTTPRequestHandler):
def do_GET(self):
if self.path == '/shutdown':
print 'Got shutdown request'
self.server.running = False
self.send_response(200)
class Server():
def __init__(self):
self._http_server = HTTPServer(('0.0.0.0', 8123), MyHandler)
self._http_server.running = True
self._http_server_thread = threading.Thread(target = self._run_http_server, name = 'serverthread')
self._http_server_thread.start()
def _run_http_server(self):
print 'Server started'
while(self._http_server.running):
self._http_server.handle_request()
print 'Server finished serving'
self._http_server.shutdown()
def check_status(self):
l = threading.enumerate()
for i in l:
print i.name
serv = Server()
print 'Sleeping for 20 seconds'
time.sleep(20)
req = urllib2.urlopen('http://127.0.0.1:8123/shutdown')
print 'Finished sleeping'
serv.check()
Meine Vermutung ist, sobald die _run_http_server Ausführung beendet, sollte der Faden nicht mehr ausgeführt, aber es doesn't.I diese Ausgabe erhalten, aber der Thread läuft weiter. Kann jemand darauf hinweisen, warum der Thread nicht aufhört?
Server started
Sleeping for 20 seconds
Got shut down request
127.0.0.1 - - [09/Jul/2016 12:17:17] "GET /shutdown HTTP/1.1" 200 -
Server finished serving
Finished sleeping
MainThread
serverthread
True
Danke! Etwas gelernt. – user1429322