我正在創建和編輯組。我需要檢查在創建具有該名稱的新組之前是否已經使用組名,或者將現有組名稱更改爲該名稱。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