From: Christopher Allan Webber Date: Wed, 24 Aug 2011 04:22:17 +0000 (-0500) Subject: Basic beaker caching functionality added to the application. X-Git-Url: https://vcs.fsf.org/?a=commitdiff_plain;h=0533f117a9ecadbe640281e9721a6e85c9ae1fec;p=mediagoblin.git Basic beaker caching functionality added to the application. --- diff --git a/mediagoblin/app.py b/mediagoblin/app.py index 3030929d..113bcb8d 100644 --- a/mediagoblin/app.py +++ b/mediagoblin/app.py @@ -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'): diff --git a/mediagoblin/config_spec.ini b/mediagoblin/config_spec.ini index 11badc1f..3f99b497 100644 --- a/mediagoblin/config_spec.ini +++ b/mediagoblin/config_spec.ini @@ -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() diff --git a/mediagoblin/init/__init__.py b/mediagoblin/init/__init__.py index 44f604b1..4fe5df35 100644 --- a/mediagoblin/init/__init__.py +++ b/mediagoblin/init/__init__.py @@ -14,7 +14,10 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . +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 diff --git a/mediagoblin/mg_globals.py b/mediagoblin/mg_globals.py index 80ff5ead..8df5606e 100644 --- a/mediagoblin/mg_globals.py +++ b/mediagoblin/mg_globals.py @@ -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 diff --git a/mediagoblin/tests/test_mgoblin_app.ini b/mediagoblin/tests/test_mgoblin_app.ini index 9d938b4f..986f793b 100644 --- a/mediagoblin/tests/test_mgoblin_app.ini +++ b/mediagoblin/tests/test_mgoblin_app.ini @@ -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