我想使用其SimpleCahce框架在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不允许在后台进程中设置缓存吗?还是我做错了什么?
Werkzeug的SimpleCache不是线程安全的。它不实现锁定,因此不打算由其他线程或进程使用。
同样,该文档似乎暗示了将高速缓存存储在进程内存中,这将使得很难将主进程的高速缓存从辅助高速缓存更改。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句