多个长期运行的线程与Tornado

时间:2014-05-12 23:15:38

标签: multithreading tornado

我试图在Tornado中编写一个流媒体服务器,我希望通过唯一的URL访问多个长时间运行的流,每个流也有一个聊天组件。理想情况下,我希望将每个流都设置为自己的线程并建立新的连接" join"一个线程,以便让人们互相聊天。阅读龙卷风的文档和源代码,我无法找到明确的方法来做到这一点。

以下是我的代码示例:

import json

from tornado.websocket import WebSocketHandler

class StreamHandler(WebSocketHandler):
    active_streams = {}

    def open(self, stream):
        if not stream in StreamHandler.active_streams:
            active_streams[stream] = set()

        StreamHandler.active_streams[stream].add(self)

    def on_message(self, message):
        message = json.loads(message)
        stream = message['hash']
        data = message['data']
        for conn in StreamHandler.active_streams[stream]:
            conn.write_message(data)
app = Application([
    (r'/s/(.*)/sock', StreamHandler)
])

上面的代码的工作原理是我可以为每个流提供不同的URL,并将消息发送到该特定流中的其他连接,但我不确定这是否是实现我想要的最佳方式。

我正在考虑扩展我的代码以使某些ThreadFactory能够为新流提供线程,但我真的不知道如何去做。

对我的思路和/或现有实施的任何反馈都将不胜感激。

0 个答案:

没有答案
相关问题