本文へスキップ
hdknr blog
戻る

django cache decorator

django: cache value decorator

from functools import wraps
from django.core.cache import c
def cached_value(key=None, **kwargs):
    """
    key で指定された値をキャッシュから取得して current に渡す
    reset=True が指定されるとキャッシュデータを使わない
    """

    def _cache_controller(original_func):
        @wraps(original_func)
        def _cache_controlled(*args, **kw):
            current = None if kw.get("reset", False) else cache.get(key)
            lastest = original_func(*args, current=current, **kw)
            cache.set(key, lastest)
            return lastest

        return _cache_controlled

    return _cache_controller
class PurchaseOrder:

    @cached_value(key="webservice_accesstoken")
    def get_accesstoken(self, current=None, reset=False):
        return Token(self.company.credentials).update_token(current)


前の記事
cp932
次の記事
Cloud Function defautl pages