python - flask +异步

标签 python python-3.x flask websocket aiohttp

我的目标是将应用程序从 python2 升级到 python3。该应用程序使用以下包:flask、flask-admin、gevent(协程)、socketio。 Flask 决定离开,其余的包将被替换。已经多次尝试替换包:

  1. Tornado + SockJS:由于缺少 SockJS,需要大量额外代码 channel
  2. > Flask-aiohttp : 在授权期间, request.form['username'] 抛出错误:

追溯(最近的调用最后):

 File "/home/user/.env/rbaio34/lib/python3.4/site-packages/flask/app.py", line 1817, in wsgi_app
response = self.full_dispatch_request()
File "/home/user/.env/rbaio34/lib/python3.4/site-packages/flask/app.py", line 1477, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/user/.env/rbaio34/lib/python3.4/site-packages/flask/app.py",line 1381, in handle_user_exception reraise(exc_type, exc_value, tb)
File "/home/user/.env/rbaio34/lib/python3.4/site-packages/flask/_compat.py",line 33, in reraise raise value
File "/home/user/.env/rbaio34/lib/python3.4/site-packages/flask/app.py",line 1475, in full_dispatch_request
rv = self.dispatch_request()
File "/home/user/.env/rbaio34/lib/python3.4/site-packages/flask/app.py", line 1461, in dispatch_request return self.view_functions[rule.endpoint](**req.view_args)
 File "/home/user/workspace/aiolina/aiolina.py", line 33, in login username = request.form['username']
File "/home/user/.env/rbaio34/lib/python3.4/site-packages/werkzeug/local.py", line 338, in __getattr__
return getattr(self._get_current_object(), name)
File "/home/user/.env/rbaio34/lib/python3.4/site-packages/werkzeug/utils.py", line 71, in __get__
value = self.func(obj)
File "/home/user/.env/rbaio34/lib/python3.4/site-packages/werkzeug/wrappers.py", line 488, in form
self._load_form_data()
File "/home/user/.env/rbaio34/lib/python3.4/site-packages/flask/wrappers.py", line 165, in _load_form_data
RequestBase._load_form_data(self)
File "/home/user/.env/rbaio34/lib/python3.4/site-packages/werkzeug/wrappers.py", line 360, in _load_form_data
mimetype, content_length, options)
File "/home/user/.env/rbaio34/lib/python3.4/site-packages/werkzeug/formparser.py", line 193, in parse
content_length, options)
File "/home/user/.env/rbaio34/lib/python3.4/site-packages/werkzeug/formparser.py", line 103, in wrapper
exhaust()
File "/home/user/.env/rbaio34/lib/python3.4/site-packages/werkzeug/wsgi.py", line 977, in exhaust
self.read(chunk)
File "/home/user/.env/rbaio34/lib/python3.4/site-packages/werkzeug/wsgi.py", line 994, in read
if to_read and len(read) != to_read:TypeError: object of type 'generator' has no len()

那么,Flask-aiohttp 可以做什么工作呢?或者改用什么包?

最佳答案

Flask-aiohttp 不是 flask 的直接替代品:它通常可以正常工作,但有时会像您观察到的那样产生错误。

我建议只尝试 aiohttp .第三方库支持SockJS SockJS .

关于python - flask +异步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32310927/

相关文章:

python-3.x - 将 pandas 数据框的多列合并为一列

google-app-engine - 将 Google Cloud KMS 与 Flask、gunicorn 和 gevent worker 一起使用时出错 : "google.api_core.exceptions.ServiceUnavailable: 503 Deadline Exceeded"

rest - 如何保护 flask 上的 REST Api

python - 将 flask 嵌入带有装饰器的类中

python - 在数据框中附加带有字符串值的列

python - 在 OSX 上安装多个版本的 python 包

python - 具有自定义实例的 BaseHTTPRequestHandler

python - Project Euler - 这个haskell代码怎么这么快?

Python如何检查输入是否只包含某些字符?

Python:将列表列表插入另一个列表列表