我知道我们不能使用Flask进行异步呼叫。Flask支持同步调用。这是否意味着用户的请求会等待之前启动的其他请求?
例如,我有一个像这样的post方法,并假设update方法需要10秒才能执行:
@app.route('/update', methods = ['POST'])
def update():
# CODE
假设100个用户同时对更新方法发出post请求。第100个用户将等待之前的请求(99个用户* 10秒= 990秒)?
发布于 2020-07-16 00:49:36
首先,根据您所说的“异步”的意思,是的,您可以向安排异步工作的Flask应用程序发出HTTP请求。这就是像celery和Rq这样的任务队列的用途。在Flask Mega Tutorial的第22章中有一个使用Rq的很好的演练。
其次,如果您只有一个单进程、单线程的web服务器,那么是的,请求是按顺序处理的。但在实践中,您将部署在诸如uwsgi
或gunicorn
之类的东西后面,它们管理运行应用程序的多个进程。
发布于 2020-07-16 00:42:02
从概念上讲,是的,您是正确的,但在现实世界中,这取决于您部署的flask应用程序
就像我们使用的Gunicorn一样,它是一个WSGI HTTP服务器,通常位于反向代理Nginx和web应用程序之间,比如Django或Flask。Gunicorn产生了许多工作进程,这些工作进程的角色是处理HTTP请求。
https://stackoverflow.com/questions/62919566
复制相似问题