mirror of
https://github.com/clinton-hall/nzbToMedia.git
synced 2025-07-11 07:46:03 -07:00
Updates rarfile to 3.1 Updates stevedore to 3.5.0 Updates appdirs to 1.4.4 Updates click to 8.1.3 Updates decorator to 5.1.1 Updates dogpile.cache to 1.1.8 Updates pbr to 5.11.0 Updates pysrt to 1.1.2 Updates pytz to 2022.6 Adds importlib-metadata version 3.1.1 Adds typing-extensions version 4.1.1 Adds zipp version 3.11.0
92 lines
2.9 KiB
Python
92 lines
2.9 KiB
Python
"""
|
|
Mako Integration
|
|
----------------
|
|
|
|
dogpile.cache includes a `Mako <http://www.makotemplates.org>`_ plugin
|
|
that replaces `Beaker <http://beaker.groovie.org>`_
|
|
as the cache backend.
|
|
Setup a Mako template lookup using the "dogpile.cache" cache implementation
|
|
and a region dictionary::
|
|
|
|
from dogpile.cache import make_region
|
|
from mako.lookup import TemplateLookup
|
|
|
|
my_regions = {
|
|
"local":make_region().configure(
|
|
"dogpile.cache.dbm",
|
|
expiration_time=360,
|
|
arguments={"filename":"file.dbm"}
|
|
),
|
|
"memcached":make_region().configure(
|
|
"dogpile.cache.pylibmc",
|
|
expiration_time=3600,
|
|
arguments={"url":["127.0.0.1"]}
|
|
)
|
|
}
|
|
|
|
mako_lookup = TemplateLookup(
|
|
directories=["/myapp/templates"],
|
|
cache_impl="dogpile.cache",
|
|
cache_args={
|
|
'regions':my_regions
|
|
}
|
|
)
|
|
|
|
To use the above configuration in a template, use the ``cached=True``
|
|
argument on any Mako tag which accepts it, in conjunction with the
|
|
name of the desired region as the ``cache_region`` argument::
|
|
|
|
<%def name="mysection()" cached="True" cache_region="memcached">
|
|
some content that's cached
|
|
</%def>
|
|
|
|
|
|
"""
|
|
from mako.cache import CacheImpl
|
|
|
|
|
|
class MakoPlugin(CacheImpl):
|
|
"""A Mako ``CacheImpl`` which talks to dogpile.cache."""
|
|
|
|
def __init__(self, cache):
|
|
super(MakoPlugin, self).__init__(cache)
|
|
try:
|
|
self.regions = self.cache.template.cache_args["regions"]
|
|
except KeyError:
|
|
raise KeyError(
|
|
"'cache_regions' argument is required on the "
|
|
"Mako Lookup or Template object for usage "
|
|
"with the dogpile.cache plugin."
|
|
)
|
|
|
|
def _get_region(self, **kw):
|
|
try:
|
|
region = kw["region"]
|
|
except KeyError:
|
|
raise KeyError(
|
|
"'cache_region' argument must be specified with 'cache=True'"
|
|
"within templates for usage with the dogpile.cache plugin."
|
|
)
|
|
try:
|
|
return self.regions[region]
|
|
except KeyError:
|
|
raise KeyError("No such region '%s'" % region)
|
|
|
|
def get_and_replace(self, key, creation_function, **kw):
|
|
expiration_time = kw.pop("timeout", None)
|
|
return self._get_region(**kw).get_or_create(
|
|
key, creation_function, expiration_time=expiration_time
|
|
)
|
|
|
|
def get_or_create(self, key, creation_function, **kw):
|
|
return self.get_and_replace(key, creation_function, **kw)
|
|
|
|
def put(self, key, value, **kw):
|
|
self._get_region(**kw).put(key, value)
|
|
|
|
def get(self, key, **kw):
|
|
expiration_time = kw.pop("timeout", None)
|
|
return self._get_region(**kw).get(key, expiration_time=expiration_time)
|
|
|
|
def invalidate(self, key, **kw):
|
|
self._get_region(**kw).delete(key)
|