【问题标题】:Fork incoming requests using python flask使用 python flask 分叉传入的请求
【发布时间】:2013-09-08 11:16:39
【问题描述】:

我在 python 中使用 Flask 开发了一个 REST 服务器,目前它是以同步方式构建的。仅在完成现有请求后才处理下一个请求,有时这会增加响应时间。大多数处理依赖于网络,需要几秒钟。处理 ie fork 的最佳方法是什么,以便我可以同时处理多个请求。

@app.route('call', methods = ['POST'])
def create_task2():
    result = process(request) # takes around 5 seconds
    return jsonify( result  ), 201

当 2 个请求同时发送到我的 restserver 时,第 2 个请求必须等待至少 10 秒才能收到响应。我想将其用作满足外部用户请求的restserver

【问题讨论】:

  • 我想您使用的是内置网络服务器,而不是像 gunicorn 这样的外部服务器,...?
  • 是的,我正在构建 Web 服务器。

标签: python networking post flask


【解决方案1】:

这只是因为您使用的是包含的开发服务器。 Flask 是一个 Web 框架,而不是 Web 服务器。

并发请求服务是由网络服务器处理的任务。

您可以使用像 uWSGI 这样的 wsgi 网络服务器来为您的烧瓶应用程序提供服务。 为了获得更高的性能,您还可以将静态服务委托给 NGINX,但对于纯 REST 服务器,通常不需要。

使用 uWSGI,您可以指定并行处理的工作人员(进程)的数量。

请记住,处理大量请求并没有什么神奇之处。 即使您使用更多的进程或线程,您也会受到并发请求处理数量的限制。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 2019-08-30
    • 1970-01-01
    • 2017-05-22
    • 1970-01-01
    • 1970-01-01
    • 2019-07-25
    相关资源
    最近更新 更多