Python GAE中的事务分片计数器

Python GAE中的事务分片计数器,python,google-app-engine,transactions,sharding,Python,Google App Engine,Transactions,Sharding,我需要更新切分计数器并返回当前计数。我在这里举一个例子: 但我不确定是否可以通过函数间接执行事务查询。下面是示例代码: @db.transactional def updateCounter(name): increment(name) get_count(name) updateCounter(TOTAL_USERS) 这会返回递增的当前计数吗?或者,由于数据库查询位于@db.transactional函数之外,这种方法无效吗?您可以在事务中进行查询 由于get\u cou

我需要更新切分计数器并返回当前计数。我在这里举一个例子:

但我不确定是否可以通过函数间接执行事务查询。下面是示例代码:

@db.transactional
def updateCounter(name):
    increment(name)
    get_count(name)

updateCounter(TOTAL_USERS)
这会返回递增的当前计数吗?或者,由于数据库查询位于@db.transactional函数之外,这种方法无效吗?

您可以在事务中进行查询

由于
get\u count()
使用非祖先查询,他的代码将产生一个错误。

您可以在事务中使用

由于
get_count()
使用非祖先查询,他的代码将产生错误。

无法*获取切分计数器的事务计数。切分计数器的工作方式是,您可以在事务中更新它们,并在事务之外对它们进行汇总。一般来说,这不是问题,因为在计数每秒更新多次的情况下使用分片计数器;计数的任何事务记录实际上在计算时都是不正确的

*通过使用XG事务,最多可以对5个碎片执行此操作,但这是一个非常糟糕的主意。首先是因为上面的原因,其次是因为它会带来与使用分片计数器一样的可伸缩性问题。

不可能*获得分片计数器的事务计数。切分计数器的工作方式是,您可以在事务中更新它们,并在事务之外对它们进行汇总。一般来说,这不是问题,因为在计数每秒更新多次的情况下使用分片计数器;计数的任何事务记录实际上在计算时都是不正确的


*通过使用XG事务,最多可以对5个碎片执行此操作,但这是一个非常糟糕的主意。首先是因为上面的原因,其次是因为它会带来与使用切分计数器一样的可伸缩性问题。

谢谢你,尼克。那很有帮助,谢谢你,尼克。这很有帮助。