結果整合性が非常に難しい、かなり典型的なユースケースがあると思います。これを支援する Python フレームワークを既に作成している人がいるかどうか疑問に思っています。
一連のエンティティに対してクエリを発行する GET リクエストがあります。それらはめったに更新されません。一度に 1 つのエンティティを更新するための POST 要求があります。エンティティを更新すると、GET 要求に表示されるかどうか/どのように表示されるかに影響します。
エンティティはめったに変更されないため、GET リクエストを長期間 (たとえば数日または数週間) memcache したいと考えています。そのため、エンティティを更新するための POST を取得するまれな機会に、memcache をクリアできます。
POST リクエストを処理し、エンティティを更新し、キャッシュをクリアし、その後すぐに GET リクエストを受信した場合に問題が発生します。最終的に一貫性のあるデータストア クエリは古いクエリ結果を表示する場合があり、その後数日間 memcached に保存されます。または数週間。
単純にデータストアを更新してキャッシュをクリアする代わりに、次のことを行う必要があります。
1. update the datastore
2. get the cached query
3. modify the cached query (with the proper sorting too!)
4. update the cache with the new modified query results (with a cas() operation)
これは十分に一般的な問題のようです。この問題を軽減するのに役立つ Python フレームワークはありますか?
データストア クエリはすべてのキャッシュをバイパスするため、ndb は役に立ちません。
問題があれば、私は現在 django-nonrel を使用しており、django-tastypie は GET リクエストを処理します。