python - 使用 Heroku、Redis 和 Flask 时出现 UnicodeError 'idna' encoding
问题描述
我在 Heroku 上使用 Heroku-Redis 服务器托管了一个 Flask REST API。
执行尝试访问 Redis 服务器的代码时,出现以下错误。
UnicodeError: encoding with 'idna' codec failed (UnicodeError: label empty or too long)
似乎导致此错误的代码是,
revoked_store.set(access_jti, 'false', ACCESS_EXPIRES * 1.2)
revoked_store.set(refresh_jti, 'false', REFRESH_EXPIRES * 1.2)
连接设置在这里:
revoked_store = redis.StrictRedis(host=os.environ.get('REDIS_URL'), port=6379, db=0, decode_responses=True)
通过查看其他各种帖子,我认为此错误是由 Redis URL 太长(> 64 个字符)引起的。看这里。
我不知道如何解决这个问题,所以任何帮助都将不胜感激。
如果您需要更多信息,请告诉我。
谢谢你。
解决方案
我遇到了同样的问题,然后我刚刚阅读了 Heroku Redis 上的文档。
作为参考,我做了以下事情,它解决了我的问题:
import os
from urllib.parse import urlparse
import redis
url = urlparse(os.environ.get("REDIS_URL"))
r = redis.Redis(host=url.hostname, port=url.port, username=url.username, password=url.password, ssl=True, ssl_cert_reqs=None)
推荐阅读
- python - 命令行程序中函数“停止”代码中的if语句?
- qt - 无法使用 qrc 加载 .qml 和 .js 文件
- static-libraries - Xcode 10 静态库不包含 x86_64 架构
- java - 由于多个可能的 bean,SpringBoot 自动装配泛型类型失败
- r - 如何将整个excel文件作为数组读取?
- python - 成本函数神经网络
- amazon-web-services - 如何下载 s3 存储桶数据?
- django - Django - 从多个表/模型中选择
- java - 识别使用 maven 创建的 fat jar 中的大尺寸依赖项
- google-drive-api - Google Drive Rest API - 如何检查文件是否已更改