Exemplo n.º 1
0
  def delete(self, key, namespace=None):
    from kay.ext.live_settings.models import KayLiveSetting

    old_namespace = namespace_manager.get_namespace()
    try:
      if namespace is not None:
        namespace_manager.set_namespace(namespace)

      setting = KayLiveSetting.get_by_key_name(key)
      if setting:
          setting.delete()
      memcache.delete("kay:live:%s" % key)
      self._del_local_cache(key, namespace=namespace)
    finally:
      if namespace is not None:
        namespace_manager.set_namespace(old_namespace)
Exemplo n.º 2
0
    def get(self, key, default=None, namespace=None):
        from kay.ext.live_settings.models import KayLiveSetting

        old_namespace = namespace_manager.get_namespace()
        try:
            if namespace is not None:
                namespace_manager.set_namespace(namespace)

            set_dictcache = False
            set_memcache = False

            value = self._get_local_cache(key, namespace=namespace)
            expire = _missing
            ttl = _missing

            if value is _missing:
                set_dictcache = True
                value = memcache.get("kay:live:%s" % key)
                if value:
                    value, ttl = value
                else:
                    value, ttl = (_missing, _missing)
            if value is _missing:
                set_memcache = True
                entity = KayLiveSetting.get_by_key_name(key)
                if entity:
                    value = entity.value or _missing
                    ttl = entity.ttl or _missing

            if value is _missing:
                return default
            else:
                if ttl is None or ttl is _missing:
                    ttl = _DEFAULT_TTL
                if set_dictcache:
                    self._set_local_cache(key,
                                          value,
                                          ttl=ttl,
                                          namespace=namespace)
                if set_memcache:
                    memcache.set("kay:live:%s" % key, (value, ttl))

                return value
        finally:
            if namespace is not None:
                namespace_manager.set_namespace(old_namespace)
Exemplo n.º 3
0
  def get(self, key, default=None, namespace=None):
    from kay.ext.live_settings.models import KayLiveSetting

    old_namespace = namespace_manager.get_namespace()
    try:
      if namespace is not None:
        namespace_manager.set_namespace(namespace)

      set_dictcache = False
      set_memcache = False
  
      value = self._get_local_cache(key, namespace=namespace)
      expire = _missing
      ttl = _missing
  
      if value is _missing:
        set_dictcache = True
        value = memcache.get("kay:live:%s" % key)
        if value:
          value,ttl = value
        else:
          value,ttl = (_missing, _missing)
      if value is _missing:
        set_memcache = True
        entity = KayLiveSetting.get_by_key_name(key)
        if entity:
          value = entity.value or _missing
          ttl = entity.ttl or _missing
  
      if value is _missing:
        return default
      else:
        if ttl is None or ttl is _missing:
          ttl = _DEFAULT_TTL 
        if set_dictcache:
          self._set_local_cache(key, value, ttl=ttl, namespace=namespace)
        if set_memcache:
          memcache.set("kay:live:%s" % key, (value, ttl))
  
        return value
    finally:
      if namespace is not None:
        namespace_manager.set_namespace(old_namespace)