1

次の3つのファイルがあります。

app.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)

globals.py

global algos_app
global cache

Test.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 に答える