首页 > 解决方案 > 为什么 app.yaml 中的“线程安全:是”在 Google App Engine 的柔性环境中不起作用?

问题描述

在标准环境中,我们可以在 app.yaml 中设置“threadsafe:yes”来为 python 中的 flask 框架启用多线程。因为谷歌会为我们做任何事。

对于灵活的环境,我们需要设置 gunicorn 以启用 async-worker 以使应用程序一次可以处理多个请求。

但我想知道为什么参数“threadsafe:yes”在灵活的环境中不起作用,而谷歌在部署应用引擎时没有给我们任何错误消息。

app.yaml

runtime: python
env: flex
api_version: 1
threadsafe: yes  --> Is this working ?
service: myapp
entrypoint: gunicorn -b :$PORT main:app

标签: javagoogle-app-enginethread-safetyapp-engine-flexibledeploying

解决方案


据我所知,您似乎可以灵活地设置“线程安全:是”,但它没有真正的效果,因为在 GAE 标准中您将使用com.google.appengine.api.ThreadManager并且正如您所说的谷歌将为我们做任何事情,但在 GAE Flexible 中,您必须使用通常的 Java 类 Thread 或您想使用的任何东西来管理自己的线程。

因此,部署时没有错误消息,但也不会影响您的代码,因为从一开始线程的安全性就是您关心的问题。


推荐阅读