运行两个扭曲的Web服务器

时间:2013-07-23 09:07:27

标签: python twisted

我有一项任务是运行一个带有twisted的web服务器,可以使用websockets和标准的HTTP功能。说,我需要使用websockets并连接到hostname:9000。我需要获取网页并使用hostname:80/webpage来获取它。我应该怎么做?

我尝试过类似的事情:

    internet.TCPServer.__init__(self,9000, WebSocketFactory(factory))
    internet.TCPServer.__init__(self,80, server.Site(HandlerHTTP))

它不起作用:80端口上的服务器启动,但9000上的服务器没有启动。

1 个答案:

答案 0 :(得分:4)

twisted.application.internet.TCPServer的实例代表一个 TCP服务器。你不能初始化它两次并从中获得两台服务器。

我希望您提供的代码片段比您提供的更完整:

from twisted.application import internet

class TwoServers(TCPServer):
    def __init__(self):
        internet.TCPServer.__init__(self,9000, WebSocketFactory(factory))
        internet.TCPServer.__init__(self,80, server.Site(HandlerHTTP))

这不起作用。这就像尝试使用两个整数的int或两个序列的list一样。而是制作两个TCPServer实例:

from twisted.application import service, internet

from websocket import WebSocketFactory

factory = ...
HandleHTTP = ...

holdMyServers = service.MultiService()
internet.TCPServer(9000, WebSocketFactory(factory)).setServiceParent(holdMyServers)
internet.TCPServer(80, server.Site(HandlerHTTP).setServiceParent(holdMyServers)

...