Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.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应用程序引擎_Python_Python 2.7_Google App Engine_Google Cloud Datastore_App Engine Ndb - Fatal编程技术网

Python 高效查找实体计数Google应用程序引擎

Python 高效查找实体计数Google应用程序引擎,python,python-2.7,google-app-engine,google-cloud-datastore,app-engine-ndb,Python,Python 2.7,Google App Engine,Google Cloud Datastore,App Engine Ndb,我正在寻找一种获取数据库大小的方法。现在,我在我的数据存储模型中有一个名为query\u all的类方法,它正是这样做的:它查询该模型的所有实体并返回它们 在我的代码中,我这样称呼它: query = MyModel.query_all(ndb.Key('MyModel', '*defaultMyModel')) count = query.count() return 'Database size: {}'.format(count) 现在这是可行的,但因为我的数据库相当大(它有大约1000

我正在寻找一种获取数据库大小的方法。现在,我在我的数据存储模型中有一个名为
query\u all
的类方法,它正是这样做的:它查询该模型的所有实体并返回它们

在我的代码中,我这样称呼它:

query = MyModel.query_all(ndb.Key('MyModel', '*defaultMyModel'))
count = query.count()
return 'Database size: {}'.format(count)
现在这是可行的,但因为我的数据库相当大(它有大约10000个实体),每次我调用它时,它会占用我的数据存储小操作配额的20%(我每天可以执行05万次操作)

有什么方法可以让我更有效地做到这一点吗?我认为是
.count()
导致了问题,而不是
查询所有(…)
,但我不确定

有什么想法吗

谢谢。

不要使用数据存储进行报告: 实时汇总数据并使用

当我想跟踪一些可消耗资源时: 我过去所做的是创建一个
QuotaManagementService
,在创建或销毁某些资源时调用它

在每次插入/删除操作中,您都会增加/减少该资源的计数

使用GAE的一个简单方法是使用,它甚至有
inc()/dec()
方法供您操作计数。您还可以异步执行此操作,这样就不会影响延迟

因为Memcache是内存中的缓存,所以只有您希望。您可能希望定期将值存储在数据存储中,可能来自后台任务。或者,您可以在应用程序更新时重新创建它

谷歌分析 您还可以将创建/删除事件输入到Google Analytics中,这样您就可以直接进入仪表板,查看有多少调用了其他详细信息,而无需为此编写太多代码

无论哪种方式,Python都可以非常透明 您可能只需要创建一个
Decorator
来自动
inc/dec
计数,甚至不用代码来管理它

Memcache写操作是免费的,因此我认为如果频繁的话,我不会将每个事件都写入
数据存储
计数器

下面是一些直接使用
数据存储
而不是
Memcache
的示例代码。

不要使用数据存储进行报告: 实时汇总数据并使用

当我想跟踪一些可消耗资源时: 我过去所做的是创建一个
QuotaManagementService
,在创建或销毁某些资源时调用它

在每次插入/删除操作中,您都会增加/减少该资源的计数

使用GAE的一个简单方法是使用,它甚至有
inc()/dec()
方法供您操作计数。您还可以异步执行此操作,这样就不会影响延迟

因为Memcache是内存中的缓存,所以只有您希望。您可能希望定期将值存储在数据存储中,可能来自后台任务。或者,您可以在应用程序更新时重新创建它

谷歌分析 您还可以将创建/删除事件输入到Google Analytics中,这样您就可以直接进入仪表板,查看有多少调用了其他详细信息,而无需为此编写太多代码

无论哪种方式,Python都可以非常透明 您可能只需要创建一个
Decorator
来自动
inc/dec
计数,甚至不用代码来管理它

Memcache写操作是免费的,因此我认为如果频繁的话,我不会将每个事件都写入
数据存储
计数器


下面是一些直接使用
数据存储
而不是
Memcache
的示例代码。

Ah,好的,明白了。我真的只是想让我的删除功能正常工作,这就是我使用数据存储的原因,但我将来会尝试使用MemcacheService。谢谢。啊,好的,明白了。我真的只是想让我的删除功能正常工作,这就是我使用数据存储的原因,但我将来会尝试使用MemcacheService。谢谢