我在我的應用程序中有一個計數器,我期望有99%的時間在使用事務更新計數器時不會出現爭用問題。GAE/P:爲計數器使用延遲任務和事務
要處理1%的時候很熱鬧,我是通過使用交易延期任務中的思維更新計數器如下:
def update_counter(my_key):
deferred.defer(update_counter_transaction)
@ndb.transactional
def update_counter_transaction(my_key):
x = my_key.get()
x.n += 1
x.put()
偶爾的情況下,當競爭導致交易失敗,任務將被重試。
我熟悉分片計數器,但這看起來更容易,適合我的情況。
有什麼我錯過,可能會導致此解決方案無法正常工作?
謝謝,對於我的應用程序來說,計數器並不確切,所以我不介意這種情況比較罕見。 –