Appengine Python中的并发请求

官方appengine文档说,如果我们在app.yaml中设置threadsafe属性为true,那么appengine将服务器并发请求。

官方链接:https://developers.google.com/appengine/docs/python/python27/newin27#Concurrent_Requests

  • 如果我们将threadsafe属性设置为true,是否意味着应用程序将会更快(超过2.5)? 官方文档/博客这样说,但我正在寻找真实世界的经验。

  • 在高层,它是如何在内部工作的? 我们的应用程序是否会初始化并为每个请求产生一个新的应用程序?


  • 你仍然只有一个线程每个请求 - 你不能产卵。

    在线程关闭的情况下,Appengine只会将一个请求路由到一个实例。 因此,如果每秒处理请求的请求次数接近1,Appengine将启动一个新实例来处理它们。 这花钱。 在线程安全的情况下,Appengine可以将多个请求路由到一个实例。

    这是否有助于您取决于您​​的应用和流量:

  • 首先,计算每秒入站请求/平均延迟。 如果这是一个很好的话,线程安全不会有太大的差别。
  • 检查您的应用程序以了解它花费多少时间等待API(例如数据存储或URL提取)。 如果这是一个很大的比例,那么线程安全将有助于保持实例的倒计时。 如果没有,它不会有多大帮助。
  • 除非您的应用程序的处理密集程度很高(很少有API等待),否则简单的规则是切换线程安全。


  • 这并不意味着您的应用程序会变得更快,请求仍然来自单个线程。
  • 当应用程序是线程安全的时,每个实例现在可以派生多个线程,每个线程将为非线程安全提供请求,其中每个实例都有一个线程为请求提供服务。

  • Python 2.5在每个请求的基础上比Python 2.7还要快一些。 这部分是由于每个人的成熟程度。 App Engine使用不同的机制来支持它们中的每一个。 Python 2.7的胜利在于它能够支持并行请求,而不是以Python 2.5处理负载峰值所需的速率旋转新的实例。

    “它如何在内部工作”的问题是,你可能无法在这里得到答案,但过去一年的Google I / O会谈到我们做什么和为什么。 在youtube.com搜索“app engine”。

    链接地址: http://www.djcxy.com/p/91615.html

    上一篇: Concurrent requests in Appengine Python

    下一篇: ins Python 2.7