Flask 可以使用 Tornado Server 的异步功能吗? [复制]

Posted

技术标签:

【中文标题】Flask 可以使用 Tornado Server 的异步功能吗? [复制]【英文标题】:Can Flask use the async feature of Tornado Server? [duplicate] 【发布时间】:2015-10-27 12:58:05 【问题描述】:

我们有一个项目使用 Flask+Gunicorn(sync)。这在很长一段时间内都很好用,但是最近我发现 Asyncio(Python3.5) 在标准库中支持异步 io。

但是,在 Asyncio 之前,有 Twisted 和 Tornado 异步服务器。所以,我在想 Flask 是否可以使用 Tornado 的 aysncio 功能,导致 Gunicorn 支持 Tornado 工人阶级。

【问题讨论】:

可以使用WSGIContainer对象:flask.pocoo.org/docs/0.10/deploying/wsgi-standalone @MartijnPieters 是的,我知道。让我好奇的是,我们是否仍然可以使用 Flask+Tornado 来处理 C10K。 【参考方案1】:

没有。可以在 Tornado 的 WSGIContainer 上运行 Flask,但由于 Flask 受 WSGI 接口的限制,它将无法利用 Tornado 的异步特性。 gunicornuwsgi 通常是比 Tornado 的 WSGIContainer 更好的选择,除非您特别需要在与原生 Tornado RequestHandlers 相同的进程中运行 Flask 应用程序。

【讨论】:

以上是关于Flask 可以使用 Tornado Server 的异步功能吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Flask即插视图与tornado比较

一起使用 Flask 和 Tornado?

tornado 启动WSGI应用(Flask)使用多线程将同步代码变成异步

flask自带的http server只能让本地访问吗

Flask, Tornado, GEvent组合运行与性能比较

jango/Flask/Tornado三大web框架性能分析