【问题标题】:FastApi + Gunicorn workers + Google app engineFastApi + Gunicorn workers + Google 应用引擎
【发布时间】:2021-11-23 23:43:28
【问题描述】:

我正在使用谷歌标准应用引擎模型将示例快速 api 应用部署到云端。该应用程序以这种方式与 gunicorn 一起提供:

gunicorn main:app --workers 4 --worker-class uvicorn.workers.UvicornWorker --bind 0.0.0.0:80

此命令生成我的应用程序的 4 个工作进程。

我读到过,在快速 API 中,您可以创建同步或异步端点。如果端点是异步的,则所有请求都在带有事件循环的单个线程上运行。如果端点是同步的,它会在另一个线程上运行该函数以防止它阻塞服务器。


我有同步阻塞端点,所以 fastapi 应该在线程上运行它们,但我也有 gunicorn spawning worker 进程。

鉴于 python 一次只执行一个线程,而且标准应用引擎在多处理方面的 CPU 方面也受到限制,我对云上 fastapi 应用程序的最佳配置感到困惑。

我应该让 gunicorn 还是 fastapi 处理并发?

【问题讨论】:

  • 嗨,OP,如果答案对您有帮助,请告诉我们。如果没有,请留下反馈,以便我们改进。

标签: python google-app-engine google-cloud-platform python-multithreading fastapi


【解决方案1】:

您指定的工作人员数量应与您的 App Engine 应用的实例类相匹配;并且由于您在应用程序中使用了 4 个工作人员,因此它等效于 4 instance classes。下面的示例显示了使用 4 gunicorn 工作人员为应用程序提供服务的 App Engine 部署:entrypoint: gunicorn -b :8080 -w 4 main:app。我提供的示例在entrypoint best practices 中进行了说明。

请注意,gunicorn 默认使用同步工作器,因此工作器类与所有 Web 应用程序兼容,但每个工作器一次只能处理一个请求。

最后,如果使用 Google App Engine Flex,请查看recommended gunicorn configurations 以获取有关您应用的更多指南。

【讨论】:

    猜你喜欢
    • 2020-10-14
    • 2013-08-30
    • 1970-01-01
    • 1970-01-01
    • 2010-11-15
    • 2012-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多