10

Flask 是一个单线程 Web 服务器。但是我想让它在处理一些耗时的请求时不会阻塞。

例如:

from flask import Flask
import time
import sys
app = Flask(__name__)

@app.route("/")
def hello():
    print "request"
    sys.stdout.flush()
    for _ in range(10000000):
        for j in range(10000000):
            i = 1
    return "Hello World!"

if __name__ == "__main__":
    app.run(debug=True)

我希望当每个客户端请求服务器时,它总是立即在控制台上输出“请求”。我已经尝试gunicorn运行,gunicorn -k gevent -w 4 a:app但它仍然显示为同步的。

4

2 回答 2

1

这个片段是一个很好的起点。

您还应该研究CeleryRQ,它们适合用于大型项目,更重要的是它们不是特定于 Flask 的。

他们还各自集成了 Flask,Flask-CeleryFlask-RQ

于 2013-09-24T14:56:30.590 回答
1

我相信你在问一些叫做“流媒体”的东西。对于 Flask,这可以使用生成器函数和yield关键字来完成。

官方 Flask 文档中更详细地介绍了流式传输,请看这里

于 2013-09-24T17:26:22.487 回答