Python Flask 上的同步 api 任务

Synchronous api tasks on Python Flask

我知道我们不能使用 Flask 进行异步调用。 Flask 支持同步调用。这是否意味着用户的请求等待之前启动的其他请求?

例如,我有一个这样的 post 方法并假设更新方法需要 10 秒来执行:

@app.route('/update', methods = ['POST'])
def update():
    # CODE

假设有 100 个用户同时对更新方法发出 post 请求。第 100 个用户将等待之前的请求(99 个用户 * 10 秒 = 990 秒)?

概念上是的,你是对的,但在现实世界中,这取决于你的部署 烧瓶应用

就像我们使用 Gunicorn,它是一个 WSGI HTTP 服务器,通常位于反向代理 Nginx 和 Web 应用程序(如 Django 或 Flask)之间。 Gunicorn 生成了一些 worker,这些 worker 的作用是处理 HTTP 请求。

首先,根据您所说的“异步”的含义,是的,您可以向安排异步工作的 Flask 应用程序发出 HTTP 请求。这就是任务队列 celery and Rq are for. There's a good walk-through of using Rq in chapter 22 of the Flask Mega Tutorial.

其次,如果您只有一个进程、单线程 Web 服务器,那么是的,请求是按顺序处理的。但在实践中,您将部署在 uwsgigunicorn 之类的东西后面,它们管理多个进程 运行 您的应用程序。