1

我有以下三个文件。

应用程序.py

from flask_restful import Api
from lib import globals
from flask import Flask
from flask.ext.cache import Cache

globals.algos_app =  Flask(__name__)

#cache in file system
globals.cache = Cache(globals.algos_app, config={'CACHE_TYPE': 'filesystem', 'CACHE_DIR': '/tmp'})

api = Api(globals.algos_app)
api.add_resource(Test, '/test')

if __name__ == '__main__':
    globals.algos_app.run(host='0.0.0.0', debug=True)

全局变量.py

global algos_app
global cache

测试.py

from flask_restful import Resource
from lib import globals
from flask_restful import Resource
import time

class Test(Resource):

    def get(self):
        return self.someMethod()

    def post(self):
        globals.cache.clear()
        return self.someMethod()

    @globals.cache.cached()
    def someMethod(self):
        return str(time.ctime())

我有一个GET需要从缓存中获取值的POST方法和一个通过首先清除缓存来更新缓存的方法。

但是,无论我调用GET还是POST方法,它总是给我缓存中的值。

PS:目前我只是在开发服务器上进行测试,但是我确实需要稍后使用 WSGI 部署它。

4

1 回答 1

0

我不确定这是否是最好的方法,但我使用以下方法做到了。

class Test(Resource):

    def get(self):
        return globals.cache.get('curr_time')

    def post(self):
        result = self.someMethod()
        globals.cache.set('curr_time', result, timeout=3600)

    def someMethod(self):
        return str(time.ctime())
于 2016-06-15T07:22:43.287 回答