我在python中使用Flask开发了一个REST服务器,目前它是以同步方式构建的。只有在完成现有请求后才会处理下一个请求,有时这会增加响应时间。大多数处理都依赖于网络,只需几秒钟。处理即fork的最佳方法是什么,以便我可以同时处理多个请求。
@app.route('call', methods = ['POST'])
def create_task2():
result = process(request) # takes around 5 seconds
return jsonify( result ), 201
当同时向我的restserver发送2个请求时,第二个请求必须等待至少10秒才能收到响应。我想将此作为休息服务器来满足外部用户的请求
答案 0 :(得分:3)
这只是因为您使用的是包含的开发服务器。 Flask是一个Web框架,而不是Web服务器。
并发请求服务是由Web服务器处理的任务。
您可以使用像uWSGI这样的wsgi webserver来为您的烧瓶应用程序提供服务。 为了获得更高的性能,您还可以将静态服务委派给NGINX,但通常不需要纯REST服务器。
使用uWSGI,您可以指定并行处理的工作人员(进程)数量。
请记住,提供大量请求并不神奇。 即使您使用更多进程或线程,您也必须处理该数量的并发请求。