Basic beaker caching functionality added to the application.
authorChristopher Allan Webber <cwebber@dustycloud.org>
Wed, 24 Aug 2011 04:22:17 +0000 (23:22 -0500)
committerChristopher Allan Webber <cwebber@dustycloud.org>
Wed, 24 Aug 2011 04:22:17 +0000 (23:22 -0500)
mediagoblin/app.py
mediagoblin/config_spec.ini
mediagoblin/init/__init__.py
mediagoblin/mg_globals.py
mediagoblin/tests/test_mgoblin_app.ini

index 3030929d8338ef46f1dcdcb02cce6af07f2efb95..113bcb8d38eef2aef1181223a2f479b0a369d9d8 100644 (file)
@@ -25,7 +25,7 @@ from mediagoblin.mg_globals import setup_globals
 from mediagoblin.init.celery import setup_celery_from_config
 from mediagoblin.init import (get_jinja_loader, get_staticdirector,
     setup_global_and_app_config, setup_workbench, setup_database,
-    setup_storage)
+    setup_storage, setup_beaker_cache)
 
 
 class MediaGoblinApp(object):
@@ -71,6 +71,9 @@ class MediaGoblinApp(object):
         # set up staticdirector tool
         self.staticdirector = get_staticdirector(app_config)
 
+        # set up caching
+        self.cache = setup_beaker_cache()
+
         # Setup celery, if appropriate
         if setup_celery and not app_config.get('celery_setup_elsewhere'):
             if os.environ.get('CELERY_ALWAYS_EAGER'):
index 11badc1fe9ec3d13923fb0194b3e1bc787239d5c..3f99b49758ec2b4d7776641cc2f528be92b368b7 100644 (file)
@@ -46,6 +46,12 @@ base_url = string(default="/mgoblin_media/")
 base_dir = string(default="%(here)s/user_dev/media/queue")
 
 
+[beaker.cache]
+type = string(default="file")
+data_dir = string(default="%(here)s/user_dev/beaker/cache/data")
+lock_dir = string(default="%(here)s/user_dev/beaker/cache/lock")
+
+
 [celery]
 # known booleans
 celery_result_persistent = boolean()
index 44f604b1c95f5b89fe45fc58fafb8191d74dbe5b..4fe5df35b96dcd772bdb164be8a9d4a9a2020a80 100644 (file)
 # You should have received a copy of the GNU Affero General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from beaker.cache import CacheManager
+from beaker.util import parse_cache_config_options
 import jinja2
+
 from mediagoblin import staticdirect
 from mediagoblin.init.config import (
     read_mediagoblin_config, generate_validation_report)
@@ -135,3 +138,16 @@ def setup_workbench():
     workbench_manager = WorkbenchManager(app_config['workbench_path'])
 
     setup_globals(workbench_manager = workbench_manager)
+
+
+def setup_beaker_cache():
+    """
+    Setup the Beaker Cache manager.
+    """
+    cache_config = mg_globals.global_config['beaker.cache']
+    cache_config = dict(
+        [(u'cache.%s' % key, value)
+         for key, value in cache_config.iteritems()])
+    cache = CacheManager(**parse_cache_config_options(cache_config))
+    setup_globals(cache=cache)
+    return cache
index 80ff5eade21f63769c73c3cb798f83a269e72084..8df5606efee073cec6ea7fee56a565e980a1cbd6 100644 (file)
@@ -31,6 +31,9 @@ db_connection = None
 # mongokit.Connection
 database = None
 
+# beaker's cache manager
+cache = None
+
 # should be the same as the 
 public_store = None
 queue_store = None
index 9d938b4f41d777dc9d452400fbab174452f66570..986f793bddeb42af9ec7d5dd32db39f535d95083 100644 (file)
@@ -19,5 +19,8 @@ base_url = /mgoblin_media/
 [storage:queuestore]
 base_dir = %(here)s/test_user_dev/media/queue
 
+[beaker.cache]
+enabled = false
+
 [celery]
 celery_always_eager = true