flask:如何存储和检索 POST 调用?
flask: How to store and retrieve POST calls?
@app.route('/path/<user>/<id>', methods=['POST'])
@cache.cached(key_prefix='/path/<user>', unless=True)
def post_kv(user, id):
cache.set(user, id)
return value
@app.route('/path/<user>', methods=['GET'])
@cache.cached(key_prefix='/path/<user>', unless=True)
def getkv(user):
cache.get(**kwargs)
我希望能够对描述的路径进行 POST 调用,存储它们,并从 user
获取它们的值。上面的代码运行了,但是有错误并且没有按需要执行。坦率地说,烧瓶缓存文档没有帮助。如何正确实施 cache.set 和 cache.get 以按需执行?
在 Flask 中,实现自定义缓存包装器非常简单。
from werkzeug.contrib.cache import SimpleCache, MemcachedCache
class Cache(object):
cache = SimpleCache(threshold = 1000, default_timeout = 100)
# cache = MemcachedCache(servers = ['127.0.0.1:11211'], default_timeout = 100, key_prefix = 'my_prefix_')
@classmethod
def get(cls, key = None):
return cls.cache.get(key)
@classmethod
def delete(cls, key = None):
return cls.cache.delete(key)
@classmethod
def set(cls, key = None, value = None, timeout = 0):
if timeout:
return cls.cache.set(key, value, timeout = timeout)
else:
return cls.cache.set(key, value)
@classmethod
def clear(cls):
return cls.cache.clear()
...
@app.route('/path/<user>/<id>', methods=['POST'])
def post_kv(user, id):
Cache.set(user, id)
return "Cached {0}".format(id)
@app.route('/path/<user>', methods=['GET'])
def get_kv(user):
id = Cache.get(user)
return "From cache {0}".format(id)
此外,简单内存缓存用于单进程环境,而 SimpleCache class 主要用于开发服务器,不是 100% 线程安全的。在生产环境中,您应该使用 MemcachedCache 或 RedisCache。
确保在缓存中找不到项目时实施逻辑。
@app.route('/path/<user>/<id>', methods=['POST'])
@cache.cached(key_prefix='/path/<user>', unless=True)
def post_kv(user, id):
cache.set(user, id)
return value
@app.route('/path/<user>', methods=['GET'])
@cache.cached(key_prefix='/path/<user>', unless=True)
def getkv(user):
cache.get(**kwargs)
我希望能够对描述的路径进行 POST 调用,存储它们,并从 user
获取它们的值。上面的代码运行了,但是有错误并且没有按需要执行。坦率地说,烧瓶缓存文档没有帮助。如何正确实施 cache.set 和 cache.get 以按需执行?
在 Flask 中,实现自定义缓存包装器非常简单。
from werkzeug.contrib.cache import SimpleCache, MemcachedCache
class Cache(object):
cache = SimpleCache(threshold = 1000, default_timeout = 100)
# cache = MemcachedCache(servers = ['127.0.0.1:11211'], default_timeout = 100, key_prefix = 'my_prefix_')
@classmethod
def get(cls, key = None):
return cls.cache.get(key)
@classmethod
def delete(cls, key = None):
return cls.cache.delete(key)
@classmethod
def set(cls, key = None, value = None, timeout = 0):
if timeout:
return cls.cache.set(key, value, timeout = timeout)
else:
return cls.cache.set(key, value)
@classmethod
def clear(cls):
return cls.cache.clear()
...
@app.route('/path/<user>/<id>', methods=['POST'])
def post_kv(user, id):
Cache.set(user, id)
return "Cached {0}".format(id)
@app.route('/path/<user>', methods=['GET'])
def get_kv(user):
id = Cache.get(user)
return "From cache {0}".format(id)
此外,简单内存缓存用于单进程环境,而 SimpleCache class 主要用于开发服务器,不是 100% 线程安全的。在生产环境中,您应该使用 MemcachedCache 或 RedisCache。
确保在缓存中找不到项目时实施逻辑。