OpenQuizz
Une application de gestion des contenus pédagogiques
MemcachedBytecodeCache Class Reference
Inheritance diagram for MemcachedBytecodeCache:
Collaboration diagram for MemcachedBytecodeCache:

Public Member Functions

def __init__ (self, client, prefix="jinja2/bytecode/", timeout=None, ignore_memcache_errors=True)
 
def load_bytecode (self, bucket)
 
def dump_bytecode (self, bucket)
 
- Public Member Functions inherited from BytecodeCache
def clear (self)
 
def get_cache_key (self, name, filename=None)
 
def get_source_checksum (self, source)
 
def get_bucket (self, environment, name, filename, source)
 
def set_bucket (self, bucket)
 

Data Fields

 client
 
 prefix
 
 timeout
 
 ignore_memcache_errors
 

Detailed Description

This class implements a bytecode cache that uses a memcache cache for
storing the information.  It does not enforce a specific memcache library
(tummy's memcache or cmemcache) but will accept any class that provides
the minimal interface required.

Libraries compatible with this class:

-   `cachelib <https://github.com/pallets/cachelib>`_
-   `python-memcached <https://pypi.org/project/python-memcached/>`_

(Unfortunately the django cache interface is not compatible because it
does not support storing binary data, only unicode.  You can however pass
the underlying cache client to the bytecode cache which is available
as `django.core.cache.cache._client`.)

The minimal interface for the client passed to the constructor is this:

.. class:: MinimalClientInterface

    .. method:: set(key, value[, timeout])

        Stores the bytecode in the cache.  `value` is a string and
        `timeout` the timeout of the key.  If timeout is not provided
        a default timeout or no timeout should be assumed, if it's
        provided it's an integer with the number of seconds the cache
        item should exist.

    .. method:: get(key)

        Returns the value for the cache key.  If the item does not
        exist in the cache the return value must be `None`.

The other arguments to the constructor are the prefix for all keys that
is added before the actual cache key and the timeout for the bytecode in
the cache system.  We recommend a high (or no) timeout.

This bytecode cache does not support clearing of used items in the cache.
The clear method is a no-operation function.

.. versionadded:: 2.7
   Added support for ignoring memcache errors through the
   `ignore_memcache_errors` parameter.

Constructor & Destructor Documentation

◆ __init__()

def __init__ (   self,
  client,
  prefix = "jinja2/bytecode/",
  timeout = None,
  ignore_memcache_errors = True 
)

Member Function Documentation

◆ dump_bytecode()

def dump_bytecode (   self,
  bucket 
)
Subclasses have to override this method to write the bytecode
from a bucket back to the cache.  If it unable to do so it must not
fail silently but raise an exception.

Reimplemented from BytecodeCache.

◆ load_bytecode()

def load_bytecode (   self,
  bucket 
)
Subclasses have to override this method to load bytecode into a
bucket.  If they are not able to find code in the cache for the
bucket, it must not do anything.

Reimplemented from BytecodeCache.

Field Documentation

◆ client

client

◆ ignore_memcache_errors

ignore_memcache_errors

◆ prefix

prefix

◆ timeout

timeout

The documentation for this class was generated from the following file: