烧瓶登录:TypeError:不支持Unicode解码 [英] Flask Login: TypeError: decoding Unicode is not supported

查看:171
本文介绍了烧瓶登录:TypeError:不支持Unicode解码的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



我的烧瓶应用程序在本地运行良好,但是一旦我在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆