2016-09-13 3 views
1

У меня есть приложение flask, которое запускается и подключается к удаленной базе данных по адресу compose.io. Приложение также развернуты pythonanywhere.com, но это развертывание продолжает бросать следующее сообщение об ошибке:Кодирование с кодеком 'idna' не выполнено в RethinkDB

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.

+0

Я смущен, когда в сообщении об ошибке появляется строка «rethinkdb: // [пользователь]: [пароль] @ aws-us-east-1-portal.1.dblayer.com: 23232» , Ваш фрагмент кода 'r.connect' не содержит этой строки, и драйвер RethinkDB, конечно же, не будет генерировать URI, который выглядит следующим образом. Итак, похоже, что фрагмент 'r.connect' не совпадает с ошибкой? –

ответ

2

IDA-кодек пытается преобразовать ваш URL-адрес rethinkdb в эквивалентную строку, совместимую с ascii.

Это работает для меня:

"rethinkdb://user:[email protected]:23232".encode("idna") 

Так что я думаю, что какой-то символ/последовательность символов в имени пользователя или пароля вызывает проблему. Попробуйте соединение с (возможно, фиктивным) очень простым паролем и убедитесь, что у вас такая же проблема.

В качестве альтернативы вы можете сделать кодировку в оболочке Python со строкой соединения и постепенно упростить ее до тех пор, пока не определите проблемную часть (ы).