Created
June 14, 2010 15:05
-
-
Save rctay/437799 to your computer and use it in GitHub Desktop.
[gae][bloggart] clear memoizer cache
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/admin.py b/admin.py | |
index b55e0cd..bbc08cd 100644 | |
--- a/admin.py | |
+++ b/admin.py | |
@@ -17,6 +17,8 @@ application = webapp.WSGIApplication([ | |
(config.url_prefix + '/admin/regenerate', handlers.RegenerateHandler), | |
(config.url_prefix + '/admin/post/delete/(\d+)', handlers.DeleteHandler), | |
(config.url_prefix + '/admin/post/preview/(\d+)', handlers.PreviewHandler), | |
+ | |
+ (config.url_prefix + '/admin/clear_cache', handlers.ClearHandler), | |
]) | |
diff --git a/handlers.py b/handlers.py | |
index f164993..a672b1c 100644 | |
--- a/handlers.py | |
+++ b/handlers.py | |
@@ -56,6 +56,31 @@ class BaseHandler(webapp.RequestHandler): | |
theme)) | |
+class ClearHandler(webapp.RequestHandler): | |
+ """Clear memoizer cache for BlogPosts.""" | |
+ | |
+ def get(self): | |
+ class Runner(object): | |
+ """ | |
+ Encapsulated in a class, so that we can save state in instances for deferred | |
+ processing. | |
+ """ | |
+ def run(self, batch_size=50, start_ts=None, classes=None): | |
+ q = models.BlogPost.all().order('-published') | |
+ q.filter('published <', start_ts or datetime.datetime.max) | |
+ posts = q.fetch(batch_size) | |
+ for post in posts: | |
+ utils.clear_memoizer_cache(post) | |
+ if len(posts) == batch_size: | |
+ deferred.defer(self.run, batch_size, posts[-1].published) | |
+ | |
+ import logging | |
+ logging.info("clearing memoizer cache") | |
+ self.response.out.write("clearing...") | |
+ | |
+ Runner().run() | |
+ | |
+ | |
class AdminHandler(BaseHandler): | |
def get(self): | |
from generators import generator_list |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment