python - 在 Flask 中从后台进程设置缓存

标签 python caching flask

我想使用 Flask 的 SimpleCahce 框架从后台进程设置缓存变量。即:

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's SimpleCache isn't thread safe.它不打算被其他线程或进程使用,因为它没有实现锁定。

此外,文档似乎暗示缓存存储在进程内存中,这使得从辅助进程更改主进程的缓存变得相当困难。

关于python - 在 Flask 中从后台进程设置缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36871643/

相关文章:

python - 如何在 Flask-restful 中返回错误消息?

python - 使用 PIL 翻译图像

java - 将大型数组缓存到 SQLite - Java/Android

python - Flask - Elastic Beanstalk 部署 - requirements.txt 非零退出状态

python - flask REST API 错误 : The view function did not return a valid response

java - Android ImageDownloader类: sHardBitmapCache NOT static when it should be?可能存在BUG

python - Pandas 数据框 : ValueError: num must be 1 <= num <= 0, 不是 1

python - 没有外键错误的django中间模型

Python:如何在停止后再次刷新 QLCDNumber session

ruby-on-rails - 静态 Assets 在生产中不是最新的