如何与tornadoioloop同时运行长时间运行的阻塞函数

unguejic  于 2021-06-09  发布在  Redis
关注(0)|答案(1)|浏览(322)

我有一个龙卷风应用程序:

if __name__ == "__main__":
    app = make_app()
    app.listen(8090)

    tornado.ioloop.IOLoop.current().start()

如何使长时间运行的任务同时运行?
具体来说,我有一个redis pubsub,它将通知我的tornado应用程序更新的授权令牌。
我试过这个:

tornado.ioloop.IOLoop.current().run_in_executor(None, redis_pubsub.subscribe_to_valid_tokens)

因为我从不等待未来,它似乎不运行函数,所以我有点纠结于“正确”的方法。
我想知道我是否应该用一个单独的python线程来实现这一点(或者利用带有队列的多处理库?
async/await有更好的用法/结构吗?

ttvkxqim

ttvkxqim1#

我必须在一个没有垃圾收集的类中存储对redis对象和pubsub对象的引用。另外,pubsub的run-in-thread方法非常有用!

相关问题