我正在创建和编辑组。我需要检查在创建具有该名称的新组之前是否已经使用组名,或者将现有组名称更改为该名称。appengine上的线程安全名称保留
的问题是两个并行的线程可以既为组名在同一时间检查,然后每一个线程可以继续,并添加自己的组。重复的名字!
我不认为我可以使用内置的事务,因为这些群体应该在不同的实体组和名称不是关键的一部分。我能做什么?
难道意义做出那种在关键使用组名称指数的实体,这样我可以做一个祖先查询来获取和创建原子的名字?创建索引实体的成功将作为非事务代码执行的权限。我希望有一个更简单的解决方案,不需要一个全新的实体类型。
我使用'长'ID来引用客户端的实体,这是非常根深蒂固的。当然,切换是一种选择,并且可能比我的索引实体解决方案更容易(并且更具有缺陷)。谢谢你的提示。 – 2011-03-12 13:21:03
@Riley'hashlib.sha256('my group name').hexdigest()'or'hashlib.sha256('my group name')。digest()。encode('base64')'会给你散列,可能是用作键,并且可以在客户端使用(尽管它们会使你的URL变得更加糟糕)。 – Calvin 2011-03-12 16:49:57
更好:'base64.urlsafe_b64encode(hashlib.sha256('my group name')。digest())。rstrip('=')' – Calvin 2011-03-12 17:06:39