<p>当然,只需在两个不同的线程中的两个不同端口上启动两个不同的服务器,每个线程都使用相同的处理程序。这是一个完整的,有效的例子,我刚刚写和测试。如果运行此代码,则可以在<a href="http://localhost:1111/" rel="nofollow noreferrer">http://localhost:1111/</a>和<a href="http://localhost:2222/" rel="nofollow noreferrer">http://localhost:2222/</a>同时获得Hello World网页</p>
<pre><code>from threading import Thread
from SocketServer import ThreadingMixIn
from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
class Handler(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header("Content-type", "text/plain")
self.end_headers()
self.wfile.write("Hello World!")
class ThreadingHTTPServer(ThreadingMixIn, HTTPServer):
daemon_threads = True
def serve_on_port(port):
server = ThreadingHTTPServer(("localhost",port), Handler)
server.serve_forever()
Thread(target=serve_on_port, args=[1111]).start()
serve_on_port(2222)
</code></pre>
<p><em>更新:</em></p>
<p>这也适用于Python3,但有三行需要稍微更改:</p>
<pre><code>from socketserver import ThreadingMixIn
from http.server import HTTPServer, BaseHTTPRequestHandler
</code></pre>
<p>以及</p>
<pre><code>self.wfile.write(bytes("Hello World!", "utf-8"))
</code></pre>