python - 在 flask 中使用 Gevent : API is not asynchronous

标签 python multithreading asynchronous flask waitress

之前我使用的是 Waitress。现在我正在使用 Gevent运行只有一个 API 的 Flask 应用

from flask import Flask, request, jsonify
import documentUtil
from gevent.pywsgi import WSGIServer

app = Flask(__name__)

@app.route('/post-document-string', methods=['POST']) 
def parse_data():
    req_data = request.get_json(force=True)
    text = req_data['text']
    result = documentUtil.parse(text)
    return jsonify(keywords = result)

if __name__=='__main__':
    http_server = WSGIServer(('127.0.0.1', 8000), app)
    http_server.serve_forever()

这很好用。但是 API 不是异步的。如果从前端,我同时触发同一个 API 两次,第二次调用会等待第一个调用先给出响应。

这里有什么问题?我怎样才能让它异步?

最佳答案

我们使用 Gunicorn 在多个进程中运行 Flask。这样你就可以从 python 中获得更多的汁液 + 自动重启等等。示例配置文件:

import multiprocessing

bind = "0.0.0.0:80"
workers = (multiprocessing.cpu_count() * 2) + 1
# ... additional config

然后用类似的东西运行

gunicorn --config /path/to/file application.app

关于python - 在 flask 中使用 Gevent : API is not asynchronous,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63471812/

相关文章:

python - GTK+ RadioButton 默认值 - 如何解决丑陋的黑客攻击?

python - 我应该使用 session 来保存用户数据吗? Django

java - ExecutorService 单线程执行器

javascript - 如何处理Node.js promise 链中的错误并解析 promise 数组

java - 在java中实现同步网络调用等待ack消息?

python - 运行 Django 服务器时出错 - 空路径与其中任何一个都不匹配

python - 无法从 python 2.7 中的命令行获取真/假值

python - 在python和qt中同时下载文件

c - 如何向c中的线程发送信号?

c# - 如何创建一个使用 async/await 的控制台应用程序