要编写一个Python HTTP服务器来侦听多个端口,可以使用http.server
模块和socketserver.ThreadingMixIn
模块。以下是一个示例代码:
import http.server
import socketserver
class ThreadedHTTPServer(socketserver.ThreadingMixIn, http.server.HTTPServer):
pass
def run(server_class=ThreadedHTTPServer, handler_class=http.server.SimpleHTTPRequestHandler, port_list=[8000, 8001, 8002]):
for port in port_list:
server_address = ('', port)
httpd = server_class(server_address, handler_class)
print(f"Starting httpd server on port {port}")
httpd.serve_forever()
if __name__ == "__main__":
run()
在这个示例中,我们创建了一个名为ThreadedHTTPServer
的类,该类继承自socketserver.ThreadingMixIn
和http.server.HTTPServer
。这允许我们在多个线程上运行多个HTTP服务器。
run
函数接受一个server_class
参数,默认为ThreadedHTTPServer
,一个handler_class
参数,默认为http.server.SimpleHTTPRequestHandler
,以及一个port_list
参数,默认为[8000, 8001, 8002]
。这个函数将遍历port_list
中的每个端口,并在每个端口上启动一个HTTP服务器。
要使用这个脚本,只需运行它,它将在指定的端口上启动HTTP服务器。例如,要在端口8000、8001和8002上启动HTTP服务器,只需运行以下命令:
python3 server.py
这将启动3个HTTP服务器实例,每个实例都在不同的端口上运行。
请注意,这个示例仅用于演示目的,实际生产环境中的HTTP服务器可能需要更多的配置和安全措施。
领取专属 10元无门槛券
手把手带您无忧上云