使用 tornado websockets 时如何处理协程

How to handle coroutine when using tornado websockets

我正在使用 tornado websockets,它工作正常。

但是,我想监听 MongoDB 集合的更改并将新更改发送到 websocket 客户端。

我无法得到它 运行 个线程,我看到不鼓励将线程与 tornado 一起使用。

我现在真的卡住了。我该如何继续?

(阻塞)现在的代码:

    def open(self):
        print("Opening Connection")
        with self.collection.watch() as stream:
            for change in stream:
                doc = change["fullDocument"]
                self.write_message(u"%s" % json.dumps(doc))

看起来 Motor 可以处理 Mongodb 变更流。 https://motor.readthedocs.io/en/stable/api-asyncio/asyncio_motor_change_stream.html

就我个人而言,我发现 RethinkDB or Firebase 是此类实时功能的更好替代方案。但是在不了解您的需求的情况下,我不能说这是否适合您。