Python Google应用程序引擎-memcache.get运行缓慢
在从数据存储中读取变量时,我使用memcache实现性能提升。但事实证明,memcache.get()似乎很慢 代码如下:Python Google应用程序引擎-memcache.get运行缓慢,python,google-app-engine,google-cloud-datastore,app-engine-ndb,Python,Google App Engine,Google Cloud Datastore,App Engine Ndb,在从数据存储中读取变量时,我使用memcache实现性能提升。但事实证明,memcache.get()似乎很慢 代码如下: def get_settings(): settings = memcache.get('ds-settings') 我从_pb调用模型内的get_settings(),每次从数据存储中读取数据时都会运行一些检查,并测量到85/90%的时间运行约7毫秒,其余10%的时间运行约70毫秒。 当在一个循环中运行100、1k或10k次时,这将成为一个严重的
def get_settings():
settings = memcache.get('ds-settings')
我从_pb调用模型内的get_settings(),每次从数据存储中读取数据时都会运行一些检查,并测量到85/90%的时间运行约7毫秒,其余10%的时间运行约70毫秒。
当在一个循环中运行100、1k或10k次时,这将成为一个严重的问题
关于如何加快读取memcache的速度有什么建议吗?为什么要在循环中运行此操作?如果您想要多个密钥,请通过调用memcache.get_multi对它们进行批处理。不要调用太多。这里有一个开销,开销是可变的。我正在覆盖_from_pb来跟踪我的模型上的属性更改(以及存储版本),就像这样。问题是,对于查询结果中的每个对象,都会调用\u from_pb。我需要一个全局变量(存储在数据存储中)来激活或禁用\u中的版本跟踪。模块级全局变量将不会是相同的accross实例,因此memcache似乎是解决方案。但是如果每次都不检查memcache,我就不知道如何从_pb将这个变量注入到_中。只是想从pb中找到如何在U内使用它的解决方案。我认为你采取了错误的方法。我建议您需要重新审视您的体系结构。通过将此调用从\u pb输入,每次您得到某个内容时,您将强制至少2个RPC。一个用于检索实体,另一个用于memcache,这可能是多余的。为什么不将此属性存储在实例级别,并且只在每n个请求中检查一次,或者寻找其他方法。到目前为止,很难从描述中真正理解您的需求。我同意,架构是错误的。我将把这个逻辑从_从_pb中删除,并将以不同的方式执行。在实例级别存储属性也不起作用,从数据存储中获取大型对象列表时,实例太多。唯一的方法似乎是从\u-from\u-pb中删除这些RPC调用。太贵了。谢谢你的评论!