我正在用Python编写一个小型web服务器,使用BaseHTTPServer和BaseHTTPServer.BaseHTTPRequestHandler的自定义子类。是否可以在多个端口上进行侦听?
我现在要做的是:
class MyRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):
def doGET
[...]
class ThreadingHTTPServer(ThreadingMixIn, HTTPServer):
pass
server = ThreadingHTTPServer(('localhost', 80), MyRequestHandler)
server.serve_forever()
当然,只需在两个不同的线程中的两个不同端口上启动两个不同的服务器,每个线程都使用相同的处理程序。这是一个完整的,有效的例子,我刚刚写和测试。如果运行此代码,则可以在http://localhost:1111/和http://localhost:2222/同时获得Hello World网页
更新:
这也适用于Python3,但有三行需要稍微更改:
以及
我想说,为这个简单的东西穿线是过分的。最好使用某种形式的异步编程。
下面是使用Twisted的示例:
我还认为用同样的方式处理每个端口看起来要干净得多,而不是让主线程处理一个端口和另一个额外的线程处理另一个端口。可以在线程示例中解决这个问题,但是您使用的是三个线程。
不容易。您可以有两个ThreadingHTTPServer实例,编写自己的serve_forever()函数(别担心这不是一个复杂的函数)。
现有功能:
所以我们的替代品应该是:
相关问题 更多 >
编程相关推荐