使用' idna'进行编码编解码器在RethinkDB中失败了

时间:2016-09-13 08:16:19

标签: python flask rethinkdb pythonanywhere compose

我有一个flask个应用程序,可运行并连接到compose.io上的远程rethinkdb数据库。该应用程序也部署到pythonanywhere.com,但此部署不断抛出以下错误:

Traceback (most recent call last):
File "/home/user/.virtualenvs/venv/lib/python3.5/encodings/idna.py", line 165, in encode
    raise UnicodeError("label empty or too long")
UnicodeError: label empty or too long

...

rethinkdb.errors.ReqlDriverError: Could not connect to rethinkdb://[user]:[password]@aws-us-east-1-portal.1.dblayer.com:23232. Error: encoding with 'idna' codec failed (UnicodeError: label empty or too long)

连接代码看起来完全如下:

conn = r.connect(host='aws-us-east-1-portal.1.dblayer.com',  
             port=23232,
             auth_key='[auth_key]',
             ssl={'ca_certs': './cacert'})

我不确定如何从这里开始。

运行Python 3.5。

1 个答案:

答案 0 :(得分:2)

idna编解码器正在尝试将您的rethinkdb网址转换为与ascii兼容的等效字符串。

这对我有用:

"rethinkdb://user:password@aws-us-east-1-portal.1.dblayer.com:23232".encode("idna")

所以我的猜测是你的用户名或密码中的某些字符/字符序列导致了这个问题。尝试使用(可能是虚假的)非常简单的密码连接,看看你是否遇到同样的问题。

或者,您可以使用连接字符串在Python shell中执行编码,并逐步简化它,直到您识别出有问题的部分。