在三次迭代中,每一次都需要启动TCPServer,然后立即停止。这三次都需要在端口8000上启动。
正如在下面的代码中定义的那样,TCPServer启动。但它只在第一次迭代时开始。另外两次迭代都无法启动TCPServer,因为端口8000已经被在前一次(第一次)迭代中启动的TCPServer使用。为了确保端口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()发布于 2018-01-26 03:49:48
使用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,以便更好地使用这个示例和链接页面底部的示例,以满足所需的要求。
https://stackoverflow.com/questions/48450053
复制相似问题