2013-06-13 8 views
9

Używam kolby, pymongo i skrzynki z kolbami - logowanie jako stos.Logowanie w kolbie: TypeError: dekodowanie Unicode nie jest obsługiwane

Moja aplikacja kolbowa działa dobrze lokalnie, ale po jej wdrożeniu z uwsgi na nginx, otrzymuję dziwny błąd Unicode z rozszerzenia flask_login.

W skrócie:

TypeError: decoding Unicode is not supported 

Traceback:

[pid: 21753|app: 0|req: 5/5] 84.207.253.34() {38 vars in 600 bytes} [Thu Jun 13 16:51:08 2013] GET/=> generated 0 bytes in 4 msecs (HTTP/1.1 500) 0 headers in 0 bytes (0 switches on core 0) 
Traceback (most recent call last): 
    File "/myproject/myproject-env/local/lib/python2.7/site-packages/flask/app.py", line 1836, in __call__ 
    return self.wsgi_app(environ, start_response) 
    File "/myproject/myproject-env/local/lib/python2.7/site-packages/flask/app.py", line 1820, in wsgi_app 
    response = self.make_response(self.handle_exception(e)) 
    File "/myproject/myproject-env/local/lib/python2.7/site-packages/flask/app.py", line 1403, in handle_exception 
    reraise(exc_type, exc_value, tb) 
    File "/myproject/myproject-env/local/lib/python2.7/site-packages/flask/app.py", line 1817, in wsgi_app 
    response = self.full_dispatch_request() 
    File "/myproject/myproject-env/local/lib/python2.7/site-packages/flask/app.py", line 1477, in full_dispatch_request 
    rv = self.handle_user_exception(e) 
    File "/myproject/myproject-env/local/lib/python2.7/site-packages/flask/app.py", line 1381, in handle_user_exception 
    reraise(exc_type, exc_value, tb) 
    File "/myproject/myproject-env/local/lib/python2.7/site-packages/flask/app.py", line 1473, in full_dispatch_request 
    rv = self.preprocess_request() 
    File "/myproject/myproject-env/local/lib/python2.7/site-packages/flask/app.py", line 1666, in preprocess_request 
    rv = func() 
    File "/myproject/myproject-env/local/lib/python2.7/site-packages/flask_login.py", line 311, in _load_user 
    deleted = self._session_protection() 
    File "/myproject/myproject-env/local/lib/python2.7/site-packages/flask_login.py", line 325, in _session_protection 
    ident = _create_identifier() 
    File "/myproject/myproject-env/local/lib/python2.7/site-packages/flask_login.py", line 133, in _create_identifier 
    request.headers.get("User-Agent")), 'utf8', errors='replace') 
TypeError: decoding Unicode is not supported 

Dlaczego to nie dzieje się w środowisku dev? Dlatego musi być w jakiś sposób związany z uwsgi na nginx. Jakieś sugestie? Dziękujemy

Odpowiedz

17

Problem nie zostanie rozwiązany poprzez obniżenie kolbę sama, bo nawet instalacji flask==0.9 byłoby zainstalowanie najnowszych zależności, co jest złe werkzeug==0.9 Stąd ty lepiej zainstalować następujące w tej kolejności:

pip install werkzeug==0.8.3 
pip install flask==0.9 
pip install Flask-Login==0.1.3 

logowanie do skrzynki, może być najnowszą wersją 0.1.3. Nie zrobiono tam krzywdy. Ten stos działa dla mnie.

Mam nadzieję, że to pomoże, dopóki nie znajdzie się łata awaryjna.

+3

Moim zdaniem, jest to najlepsza rzecz do zrobienia. – maxcountryman

+0

Re: łata awaryjna: biorąc pod uwagę opiekuna Flask-Login [nie oczekuje jednego] (https://github.com/maxcountryman/flask-login/issues/78#issuecomment-19428468), nie spodziewałbym się to wyjść. Na pierwszy rzut oka Flask-Login nie będzie obsługiwał Flask v0.10, dopóki nie pojawi się gałąź oczyszczania. Które, AFAIC, jest w porządku: po prostu nie używaj Flask 0.10 jeszcze :) –

+0

Zauważ, że jest to upstream błąd, [zgłaszane tutaj] (https://github.com/mitsuhiko/flask/issues/772). Flask-Login został zaktualizowany, ale oczywiście nie może rozwiązać problemu. Możesz teraz użyć [wersji 0.2.x] (https://github.com/maxcountryman/flask-login/tree/0.2.2) teraz. – maxcountryman

7

Mam ten sam problem, bardzo w moim środowisku dev, z kolbą 0,10 i kolby Login 0.1.3

wygląda kolby 0,10 ma teraz nagłówki żądania Unicode więc eksploduje kolba Login podczas próby kodowania już zakodowany ciąg ...

Flask_login ludzie już pracują nad tym: https://github.com/maxcountryman/flask-login/issues/78

(EDIT) natychmiastowy droga do tymczasowego szczęścia (jak widać na github podwójnej nici, thx Kofalt & Kave!)

pip uninstall flask ; pip uninstall werkzeug ; pip uninstall Flask-Login ; pip install werkzeug==0.8.3 ; pip install flask==0.9 ; pip install Flask-Login==0.1.3 
+0

Dzięki za link. Usunąłem teraz całe środowisko wirtualne i utworzyłem nowy stos. Ale nadal uzyskać ten sam błąd: 'Babel == 0.9.6 Kolba == 0,9 skrzynkowego Aktywa == 0,8 Kolba-Babel == 0,8 Kolba-Bcrypt == 0.5.2 Kolba Login = = 0.1.3 skrzynkowego cholery == 0.8.3 Jinja2 == 2,7 MarkupSafe == == 0,18 WTForms 1.0.4 Werkzeug == 0,9 argparse == 1,2.1 zamknięcie == 20121212 cssmin 0.1.4 isodate == == 0.4.9 jsonschema == 2.0.0 PY-bcrypt == == 0,3 pymongo 2.5.2 pyton-dateutil == 1,5 pytz == 2013b Rauth == 0.5.4 wnioski == == 1.1.0 speaklater 1.3 webassets == 0,8 wsgiref == 0.1.2' – Houman

+0

samo tutaj Kave, może Werkzeug musi zostać obniżona też? zażądano jednak poprawki awaryjnej do logowania na kolbę. – Carst

+0

Używaj kolby 0.9 do momentu wydania lub ewentualnie załóż łatkę Flask-Login samodzielnie. – maxcountryman

1

Zgodnie losu S., to wygląda na kolbie 0,10 problemem. Spróbuj zainstalować poprzednią wersję kolbę w środowisku wirtualnym, używając:

pip install Flask==0.9 
+0

dzięki. 'pip install Flask == 0.9' :-p – Houman

+1

' pip install = 0,9' nie rozwiązuje problemu, ponieważ pobierze 'werkzeug == 0.9', więc musisz użyć' pip install flask == 0.9 werkzeug == 0.8 .3' – tbicr

2

Mój widelec, który rozwiązuje ten problem:

https://github.com/jgelens/flask-login/tree/0.1.4 

zainstalować przy użyciu:

pip install https://github.com/jgelens/flask-login/archive/0f07b8fa783c40d09cb284d442a526f067bab28b.zip#egg=flask-login 
Powiązane problemy