嘿,我不明白为什么flask-caching似乎忽略了redis密码
我有一个密码设置为 1234 的 Redis 设置,但是当我使用 CACHE_REDIS_PASSWORD 也设置为 1234 的配置来配置 Flask 缓存时,我仍然收到“需要身份验证”错误
我把它放在我的 redis-cli 中
CONFIG SET requirepass 1234
当我取消设置密码时,它工作得很好(实际上不应该。当为没有密码的 Redis 实例提供密码时,它应该显示警告,或者失败)
CONFIG SET requirepass ""
我正在使用flask_caching版本2.3.0和redis 4.5.4以及flask 2.2.5
最小设置是
from flask import Flask
from flask_caching import Cache
app = Flask(__name__)
config = {
'CACHE_TYPE': 'RedisCache', 'CACHE_KEY_PREFIX': 'resources_cache ',
'CACHE_REDIS_URL': f'redis://localhost:6379/0', 'CACHE_DEFAULT_TIMEOUT': 5,
'CACHE_REDIS_PASSWORD': 1234
}
cache = Cache(app=app, config=config)
cache.clear()
身份验证错误发生在cache.clear()处
redis.exceptions.AuthenticationError: Authentication required.
这是否有任何明显的问题,或者可能存在版本冲突?
不用说,我实际上不会使用密码 1234,这只是一个测试,看看是否有密码有效
确实,
flask-caching
是版本号为2.3.0
的错误库。看起来当它从 url 创建 redis 实例时,它无法解释传入 redis url 的密码。
它从默认网址
redis://localhost:6379/0
而不是 redis://:<password>@localhost:6379/0
创建一个 Redis 实例。
您可以在第 87 行看到该错误:
...
kwargs["host"] = redis_from_url(redis_url, db=kwargs.pop("db", None))
...
如果你不想在这里依赖
cachelib
并且它的 api 非常简单,那么
flask-caching
可以正常工作。另一方面,您必须提交错误报告并等待前者的更新。