首页 > 解决方案 > 使用 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 个字符)引起的。看这里。

我不知道如何解决这个问题,所以任何帮助都将不胜感激。

如果您需要更多信息,请告诉我。

谢谢你。

标签: pythonsocketsflaskherokuredis

解决方案


我遇到了同样的问题,然后我刚刚阅读了 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)

推荐阅读