python-3.x - 如何与龙卷风 IOLoop 同时运行长时间运行的阻塞功能
问题描述
我有一个龙卷风应用程序:
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)
由于我从不等待 Future 它似乎没有运行该功能,因此我对执行此操作的“正确”方法有些困惑。
- 我想知道我是否应该使用单独的 python 线程来执行此操作(或者也许利用带有队列的多处理库?
- 我应该使用一些更好的异步/等待结构吗?
解决方案
我必须将对 redis 对象和 pubsub 对象的引用存储在一个不会被垃圾收集的类中。此外,pubsub 的 run_in_thread 方法也很有帮助!
推荐阅读
- c# - 等效于 emgucv csharp 中的 OpenCv c++ api Vec2f,norm, acos
- ruby-on-rails - 神秘类型错误:没有为类 OpenSSL::Digest 定义 _dump_data
- php - 从选择/输入框中获取输入。在 javascipt 中,然后在 php 中运行选择查询
- node.js - 如何将CSV但在字段中具有\r\n和“,”的字符串转换为json?
- reactjs - 页面上的简单路由。如何设置正确的显示?
- php - 如何在 PHP 中将 XML 转换为数组
- android - 如何使单选按钮的图像居中?
- excel - 将变量从用户窗体传递到模块
- git - OpenSSL 和原生 windows 安全通道库有什么区别
- sql-server - 实体框架和 JSON.NET 序列化