烧瓶登录:TypeError:不支持Unicode解码 [英] Flask Login: TypeError: decoding Unicode is not supported
问题描述
我的烧瓶应用程序在本地运行良好,但是一旦我在nginx上使用uwsgi进行部署,
简而言之:
TypeError:不支持解码Unicode
追踪:
[pid:21753 | app:0 | req:5/5] 84.207.253.34(){38 vars in 600 bytes} [Thu Jun 13 16:51:08 2013] GET / =>生成0个字节,以4 msecs为单位(HTTP / 1.1 500)0个字节,0字节(0核心0个开关)
Traceback(最近调用最后一个):
文件/ myproject / myproject-env / local /lib/python2.7/site-packages/flask/app.py,第1836行,在__call__
中返回self.wsgi_app(environ,start_response)
文件/ myproject / myproject-env / local /lib/python2.7/site-packages/flask/app.py,第1820行,位于wsgi_app
response = self.make_response(self.handle_exception(e))
文件/ myproject / myproject $ my
$ exc
$ file $ / myproject / myproject- / myproject / myproject-env / local / lib / python2.7 / local / lib / python2.7 / site-packages / flask / app.py,第1477行,在full_dispatch_request
rv = self.handle_user_exception(e)
文件/ myproject / myproject-env / local /李b / python2.7 / site-packages / flask / app.py,第1381行,在handle_user_exception
reraise(exc_type,exc_value,tb)
文件/ myproject / myproject-env / local / lib /python2.7/site-packages/flask/app.py,在1473行,在full_dispatch_request
rv = self.preprocess_request()
文件/ myproject / myproject-env / local / lib / python2 ./ / site-packages / flask / app.py,第1666行,在preprocess_request中
rv = func()
文件/myproject/myproject-env/local/lib/python2.7/site -packages / flask_login.py,行311,在_load_user
deleted = self._session_protection()
文件/myproject/myproject-env/local/lib/python2.7/site-packages/flask_login .py,第325行,在_session_protection
ident = _create_identifier()
文件/myproject/myproject-env/local/lib/python2.7/site-packages/flask_login.py,第133行,在_create_identifier
request.headers.get(User-Agent)),'utf8',errors ='replace')
TypeError:不支持解码Unicode
为什么在dev环境中不会发生这种情况?因此它必须以某种方式与nginx上的uwsgi相关。有什么建议么?很多感谢解决方案
这个问题不会通过单独降级烧瓶解决,因为即使安装了 flask = = 0.9
会安装最新的依赖关系,这是坏的 werkzeug == 0.9
因此,您最好按以下顺序安装以下内容:
pip install werkzeug == 0.8.3
pip install flask == 0.9
pip install Flask-登录== 0.1.3
登录,然后可以得到0.1.3的最新版本。那里没有伤害。
这个堆栈适用于我。
希望这会有所帮助,直到紧急补丁出来。
I am running flask, pymongo and flask-login as a stack.
My flask app is running fine locally, but once I deploy it with uwsgi on nginx, I get a strange unicode error from flask_login extension.
In short:
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
Why is this not happening in dev environment? Hence it must be somehow related to uwsgi on nginx. Any suggestions? Many Thanks
The problem won't be solved by downgrading flask alone, because even installing flask==0.9
would install the latest dependencies, which is the bad werkzeug==0.9
Hence you better install the following in this order:
pip install werkzeug==0.8.3
pip install flask==0.9
pip install Flask-Login==0.1.3
flask login, can then be the latest version 0.1.3. No harm done there. This stack works for me.
Hope this helps, until the emergency patch is out.
这篇关于烧瓶登录:TypeError:不支持Unicode解码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!