Appengine Python中的并发请求

2024-10-01 15:43:40 发布

您现在位置:Python中文网/ 问答频道 /正文

appengine的官方文档说,如果我们在应用程序yaml然后appengine将处理并发请求。在

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

  • 如果threadsafe属性为true,这是否意味着应用程序会更快(超过2.5)?官方文件/博客上是这么说的,但我在寻找真实世界的体验。

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


Tags: 文档httpscom应用程序yamldocs官方链接
3条回答

在每个请求的基础上,Python2.5仍然比Python2.7快一些。这在一定程度上是因为每一个都很成熟。appengine使用不同的机制来支持它们。Python2.7的优势在于它能够支持并行请求,而不是以Python2.5处理负载峰值所需的速度启动新实例。在

“内部是如何工作的”这个问题在这里你可能得不到答案,但去年谷歌I/O的一些谈话暗示了我们要做什么和为什么要做。搜索youtube.com网站对于“应用引擎”。在

每个请求仍然只有一个线程-不能生成。在

关闭threadsafe后,Appengine只会将一个请求路由到一个实例。因此,如果每秒处理请求时间的请求数接近1,Appengine将启动一个新实例来处理这些请求。这要花钱。启用threadsafe后,Appengine可以将多个请求路由到一个实例。在

这是否对你有帮助取决于你的应用程序和你的流量:

  1. 首先,计算每秒入站请求/平均延迟。如果这个值低于1,那么threadsafe也不会有太大的区别。在
  2. 检查你的应用程序,找出它在等待api(例如数据存储或URL获取)上花费了多少时间。如果这个比例很大,那么threadsafe将有助于保持实例倒计时。如果没有,也没什么用。在

简单的规则是打开switchthreadsafe,除非你的应用程序非常需要处理(很少的API等待)。在

  1. 这并不意味着你的应用程序会变得更快,请求仍然是由一个线程提供的。在
  2. 当应用程序是线程安全的时,每个实例现在可以产生多个线程,每个线程将按照非线程安全的方式提供一个请求,其中每个实例都有一个线程为请求提供服务。在

相关问题 更多 >

    热门问题