这是有趣的。我做了一个简单的脚本来绑定和服务http,但我没有在 Python3 中做到这一点。我可以写一个简单的服务器:
import http.server
import socketserver
PORT = 8002
Handler = http.server.SimpleHTTPRequestHandler
#https://docs.python.org/3/library/http.server.html
class MyHandler(http.server.SimpleHTTPRequestHandler):
def __init__(self, request, client_addr, server):
super().__init__(request, client_addr, server)
def do_GET(self, ):
self.send_response(200)
self.send_header("Content-type", "text/html")
self.wfile.write('Hey!'.encode())
httpd = socketserver.TCPServer(("0.0.0.0", PORT), MyHandler)
print("serving at port", PORT)
httpd.serve_forever()
但是当我运行它时,然后 Ctrl+c,然后再次运行它,它说:
OSError: [Errno 98] 地址已在使用中
如果我杀死前一个进程,为什么会这样?
此外,除了不能将其用作简单的测试 web 应用程序之外,还有什么原因可以在IP :port/somesamplewebapp 上的测试服务器上使用 - 他们说“不建议将 http.server 用于生产。它只实现基本的安全性检查。” 但如果它不需要 https 或额外的安全性......有什么风险?