0
SimpleCahceフレームワークを使用してFlaskのバックグラウンドプロセスからキャッシュ変数を設定したいとします。つまり、Flaskのバックグラウンドプロセスからキャッシュを設定する
from rq import Queue
from worker import conn
from werkzeug.contrib.cache import SimpleCache
cache = SimpleCache()
app = Flask(__name__)
q = Queue(connection=conn)
# background process to be run. located in a seperate file
def test():
for i in range(10):
cache.set("value", i, 3600)
time.sleep(1)
@app.route('/')
def home():
cache.clear()
q.empty()
q.enqueue(test, timeout=1000)
return jsonify({'state':"running"})
@app.route('/current_value')
def get_value():
return jsonify({'value':cache.get("value")})
ただし、これは常にnull
を返します。私はRedisを使う前にこれをやったことがありますが、SimpleCacheで許可されていないバックグラウンドプロセスでキャッシュを設定していますか?それとも、何か間違っているだけですか?
スレッドセーフな推奨(単純な)キャッシュ方法をご存知ですか? – Ben
あなたはすでにあなたの質問でそれを言った:Redis。またはmemcache、データベースなど – davidism
複数のプロセスからキャッシュを変更する必要がある場合は、Redisのような専用キャッシュサーバーを使用する必要があります。 –