1

compose.ioflaskのリモート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 を実行しています。

4

1 に答える 1

3

idna コーデックは、rethinkdb URL を ASCII 互換の同等の文字列に変換しようとしています。

これは私のために働いた:

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

したがって、ユーザー名またはパスワードの一部の文字/文字列が問題を引き起こしていると思います。(偽の可能性がある) 非常に単純なパスワードを使用して接続を試み、同じ問題が発生するかどうかを確認してください。

または、接続文字列を使用して Python シェルでエンコードを実行し、問題のある部分を特定するまで徐々に単純化することもできます。

于 2016-09-13T12:15:56.827 に答える