Я полагаю, что у меня есть довольно типичный вариант использования, который очень сложен с возможной согласованностью. Мне интересно, создал ли кто-нибудь уже фреймворк Python, чтобы помочь с этим.
У меня есть запрос GET, который выдает запрос для набора сущностей. Они редко обновляются. У меня есть запрос POST для обновления одного объекта за раз, обновление объекта влияет на то, отображаются ли они в запросе GET.
Поскольку сущности меняются редко, я бы хотел, чтобы запрос GET хранился в памяти в течение длительного времени, скажем, дней или недель. Так что в редких случаях я получаю POST для обновления сущности, я могу очистить memcache.
Проблема возникает, если я обрабатываю запрос POST, обновляю объект, очищаю кеш, а вскоре после этого приходит запрос GET, в конечном итоге непротиворечивый запрос к хранилищу данных может показать старые результаты запроса, которые затем будут кэшироваться в памяти в течение следующих нескольких дней. или недели.
Вместо того, чтобы просто обновлять хранилище данных и очищать кеш, мне нужно:
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.