我相信我有一个相当典型的用例,很难最终保持一致。我想知道是否有人已经创建了一个 python 框架来帮助解决这个问题。
我有一个 GET 请求,它发出一组实体的查询。它们很少更新。我有一个 POST 请求一次更新一个实体,更新实体会影响它们是否/如何出现在 GET 请求中。
由于实体很少更改,我想长时间缓存 GET 请求,比如说几天或几周。因此,在我获得更新实体的 POST 的罕见机会中,我可以清除内存缓存。
如果我处理一个 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 请求。