Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Google应用程序引擎-memcache.get运行缓慢_Python_Google App Engine_Google Cloud Datastore_App Engine Ndb - Fatal编程技术网

Python Google应用程序引擎-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次时,这将成为一个严重的

在从数据存储中读取变量时,我使用memcache实现性能提升。但事实证明,memcache.get()似乎很慢

代码如下:

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调用。太贵了。谢谢你的评论!