0

我想优化我的GAE webapp以获得延迟。GAE/Python上的请求之间的异步数据库访问

该应用程序有两个请求通常来来一个接一个。

在第一个请求期间启动异步数据库/ memcache请求,然后在以下请求中使用其结果是否安全?

(我知道,第二个请求可能击中另一个实例。这将是一次不命中处理)

+0

撇开安全问题,你会怎么建议这样做? –

+0

@DanielRoseman - 只需在全局名称空间中保留一个引用即可。 – Srg

+0

通过全局名称空间,您是否意味着在发生处理第一个请求的实例的记忆中,随着流量增加和缓存更加有用,减少了在缓存彩票中获胜的机会? – tesdal

回答

0

你不能在一个请求启动一个异步API调用,并获得其在其他结果。 HTTP服务基础设施将等待在HTTP响应被发送回去之前完成请求中的所有API调用;代表异步API调用的数据结构将在第二个请求中无用(即使它碰到相同的实例)。

您可能会尝试使用Appstats来查明您的请求正在进行哪些API调用,并查看是否可以避免使用某些API,或者使用memcache或并行化。

您也可以使用在数据存储区API中集成了memcache的NDB。

+0

这就是我认为从阅读文档,但奇怪的是,它似乎工作..可能是我得到我的异步请求隐式重新创建并在第二次请求期间再次发送? – Srg

+0

此刻切换到NDB :-)感谢您的出色工作!我希望它早些时候在那里,所以我不必实施我自己的丑陋 - NDB黑客。 – Srg

+0

我相信你会看到幻影效果,但没有代码就不可能说出发生了什么。这可能不值得调查, –