Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2568)

Unified Diff: chrome/common/extensions/docs/server2/appengine_wrappers.py

Issue 10834329: Extension docs server: many changes to bring down the latency of the server, (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/common/extensions/docs/server2/appengine_wrappers.py
diff --git a/chrome/common/extensions/docs/server2/appengine_wrappers.py b/chrome/common/extensions/docs/server2/appengine_wrappers.py
index 9cbdbd435f990f4e50d04246b40647f4916fe58a..395747114ba00bfe6817e50ae840c7fca9d95125 100644
--- a/chrome/common/extensions/docs/server2/appengine_wrappers.py
+++ b/chrome/common/extensions/docs/server2/appengine_wrappers.py
@@ -4,13 +4,55 @@
# This will attempt to import the actual App Engine modules, and if it fails,
# they will be replaced with fake modules. This is useful during testing.
+
+import time
+
+class InMemoryMemcache(object):
+ """A memcache that stores items in memory instead of using the memcache
+ module.
+ """
+ class _CacheEntry(object):
+ def __init__(self, value, expire_time):
+ self.value = value
+ self._never_expires = (expire_time == 0)
+ self._expiry = time.time() + expire_time
+
+ def HasExpired(self):
+ if self._never_expires:
+ return False
+ return time.time() > self._expiry
+
+ def __init__(self):
+ self._cache = {}
+
+ def set(self, key, value, namespace, time=60):
+ if namespace not in self._cache:
+ self._cache[namespace] = {}
+ self._cache[namespace][key] = self._CacheEntry(value, time)
+
+ def get(self, key, namespace):
+ if namespace not in self._cache:
+ return None
+ cache_entry = self._cache[namespace].get(key, None)
+ if not cache_entry:
+ return None
+ if cache_entry.HasExpired():
+ self.delete(key, namespace)
+ return None
+ return cache_entry.value
+
+ def delete(self, key, namespace):
+ if namespace in self._cache:
+ self._cache[namespace].pop(key)
+
try:
import google.appengine.ext.blobstore as blobstore
from google.appengine.ext.blobstore.blobstore import BlobReferenceProperty
import google.appengine.ext.db as db
import google.appengine.ext.webapp as webapp
import google.appengine.api.files as files
- import google.appengine.api.memcache as memcache
+ #import google.appengine.api.memcache as memcache
+ memcache = InMemoryMemcache()
import google.appengine.api.urlfetch as urlfetch
except ImportError:
import re
@@ -73,26 +115,6 @@ except ImportError:
blobstore = NotImplemented()
files = NotImplemented()
- class InMemoryMemcache(object):
- """A memcache that stores items in memory instead of using the memcache
- module.
- """
- def __init__(self):
- self._cache = {}
-
- def set(self, key, value, namespace, time=60):
- if namespace not in self._cache:
- self._cache[namespace] = {}
- self._cache[namespace][key] = value
-
- def get(self, key, namespace):
- if namespace not in self._cache:
- return None
- return self._cache[namespace].get(key, None)
-
- def delete(self, key, namespace):
- if namespace in self._cache:
- self._cache[namespace].pop(key)
memcache = InMemoryMemcache()
# A fake webapp.RequestHandler class for Handler to extend.
« no previous file with comments | « chrome/common/extensions/docs/server2/app.yaml ('k') | chrome/common/extensions/docs/server2/file_system.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698