在三次迭代中,TCPServer需要启动然后立即停止。所有这三次都需要在端口8000上启动。
如下面的代码中所定义,TCPServer启动。但它仅在第一次迭代期间开始。另外两次迭代无法启动TCPServer,因为在前一次(第一次)迭代中启动的TCPServer已经在使用端口8000。 要确保端口8000可用,需要关闭先前启动的TCP服务器。
如何终止(停止)已经运行的TCPServer?
import SimpleHTTPServer
import SocketServer
def startServer():
Handler = SimpleHTTPServer.SimpleHTTPRequestHandler
Handler.extensions_map.update({'.webapp': 'application/x-web-app-manifest+json', })
try:
httpd = SocketServer.TCPServer(("", 8000), Handler)
httpd.serve_forever()
print('httpd server has been successfully started ')
except Exception, e:
print(e)
for i in range(3):
startServer()
答案 0 :(得分:3)
使用shutdown()
告诉serve_forever()
循环停止并等待它。 2.6版中的新功能。 docs.python.org/2/library/socketserver.html
对于您的代码,它应该像
一样简单 httpd.serve_forever()
print('httpd server has been successfully started ')
httpd.shutdown()
httpd.server_close()
print('httpd server has been successfully stopped')
我会将其留给OP,以便更好地使用此链接页面底部的示例,以满足所需的要求。