python - 使用 Gunicorn 和 Gevent 运行 Flask 时使用请求发出非阻塞请求

标签 python flask python-requests gunicorn gevent

我的 Flask 应用程序将收到一个请求,进行一些处理,然后向一个缓慢的外部端点发出一个请求,该端点需要 5 秒才能响应。看起来使用 Gevent 运行 Gunicorn 将允许它同时处理许多这些缓慢的请求。如何修改下面的示例以使 View 不阻塞?

import requests

@app.route('/do', methods = ['POST'])
def do():
    result = requests.get('slow api')
    return result.content
gunicorn server:app -k gevent -w 4

最佳答案

如果您使用 gunicorn 部署 Flask 应用程序,它已经是非阻塞的。如果客户端正在等待来自您的一个 View 的响应,则另一个客户端可以毫无问题地向同一 View 发出请求。将有多个工作人员同时处理多个请求。无需更改代码即可使用。这也适用于几乎所有 Flask 部署选项。

关于python - 使用 Gunicorn 和 Gevent 运行 Flask 时使用请求发出非阻塞请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39756807/

相关文章:

带有请求的 Python 网络抓取 - 在响应中只得到一小部分数据

python - 使用 pandas DataFrame 将 python 字典导出到 .csv 文件时如何解决(我认为是)编码问题?

python - 如何使用 joblib Python 返回矩阵?

Python Find max in dataframe 列以循环查找所有值

python - DDD 与 Python : did I get it right?

python - 从 Flask-Mail 发送邮件(SMTPSenderRefused 530)

c# - 如何在 Python Waitress 服务器上调试 (500) 内部服务器错误?

python - 在 Flask 中使用 oauth2 库时无法访问 session

python - 在 python 中使用 requests_futures 进行异常处理

Python requests.get 和 urllib.urlopen 返回不同的 HTML 到浏览器