flask-caching 配置忽略 redis 密码

问题描述 投票:0回答:1

嘿,我不明白为什么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,这只是一个测试,看看是否有密码有效

python flask redis
1个回答
0
投票

确实,

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
 可以正常工作。另一方面,您必须提交错误报告并等待前者的更新。

© www.soinside.com 2019 - 2024. All rights reserved.