コード例 #1
0
ファイル: __init__.py プロジェクト: zeetyproyectos/frappe
def cache():
	"""Returns memcache connection."""
	global redis_server
	if not redis_server:
		from frappe.utils.redis_wrapper import RedisWrapper
		redis_server = RedisWrapper.from_url(conf.get("cache_redis_server") or "redis://localhost:11311")
	return redis_server
コード例 #2
0
ファイル: __init__.py プロジェクト: gangadharkadam/letzfrappe
def cache():
    """Returns memcache connection."""
    global redis_server
    if not redis_server:
        from frappe.utils.redis_wrapper import RedisWrapper
        redis_server = RedisWrapper(conf.get("redis_server") or "localhost")
    return redis_server
コード例 #3
0
ファイル: __init__.py プロジェクト: KanchanChauhan/frappe
def cache():
	"""Returns memcache connection."""
	global redis_server
	if not redis_server:
		from frappe.utils.redis_wrapper import RedisWrapper
		redis_server = RedisWrapper.from_url(conf.get("cache_redis_server") or "redis://localhost:11311")
	return redis_server
コード例 #4
0
        def decorated(*args, **kwargs):
            logger = frappe.logger()
            global cache
            for idx, arg in enumerate(args):
                kwargs[arg_names[idx]] = arg

            param_slug = frappe.as_json(kwargs, indent=None).replace('\"', '')
            method_name = f'{fn.__module__}.{fn.__name__}'
            site_name = frappe.local.site
            slug = f"{site_name}-{method_name}**{param_slug}"

            if not cache:
                if frappe.local.conf.redis_big_cache:
                    cache = RedisWrapper.from_url(
                        frappe.local.conf.redis_big_cache)
                else:
                    cache = frappe.cache()

            # print('SLUG=', slug)
            cached_value = cache.get(slug)
            # print('Cached Value', cached_value)
            if cached_value:
                cached_value = pickle.loads(cached_value)
                if cached_value == '__PENDING__':
                    gevent.sleep(1)
                    return decorated(**kwargs)
                # print('@@@@@@@@@@@@@@@@@@From Cache', slug)
                logger.debug(f'Serving {method_name} from cache')
                return cached_value

            exclusive = cache.set(slug, PENDING, nx=True, ex=build_expiry)
            logger.debug(f'Cache miss for {method_name}')
            if not exclusive:
                gevent.sleep(1)
                return decorated(**kwargs)

            try:
                response = fn(**kwargs)
            except:
                cache.delete(slug)
                raise

            cached_value = pickle.dumps(response)
            cache.set(slug, cached_value, ex=expiry)
            # print('set_value@@@', cache.get(slug))
            return response