RuntimeError:安装 Flask 并添加“异步”额外功能才能使用异步视图

koh*_*oul 23 python flask

当我尝试使用 docker run (本地)在本地运行此命令时,出现以下错误。但是,我已经运行了“pip install”flask[async]”并且所有内容似乎都已安装,但我仍然遇到相同的错误!有人知道出了什么问题吗?

import asyncio
from flask import Flask
from flask import request
from flask import Response
import json
import commacount



app = Flask(__name__)

@app.routes('/')
async def home():
    x = str(request.args.get('x'))
    answer = str(commacount.commaCount(x))
    await asyncio.sleep(2)

    
    
    r = {
        "x": x,
        "answer": answer
    }

    reply = json.dumps(r)

    response = Response(response = reply, status=200, mimetype="application/json")
    
    response.headers['Content-Type']='application/json'
    response.headers['Access-Control-Allow-Orgin']='*'

    return response

if __name__ == '__main__':
    loop = asyncio.get_event_loop()
    loop.run_until_complete(app.run(host='0.0.0.0', port=5000))
Run Code Online (Sandbox Code Playgroud)
[2021-12-12 04:42:36,711] ERROR in app: Exception on / [GET]
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/dist-packages/flask/app.py", line 2073, in wsgi_app
    response = self.full_dispatch_request()
  File "/usr/local/lib/python3.6/dist-packages/flask/app.py", line 1518, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/usr/local/lib/python3.6/dist-packages/flask/app.py", line 1516, in full_dispatch_request
    rv = self.dispatch_request()
  File "/usr/local/lib/python3.6/dist-packages/flask/app.py", line 1502, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args)
  File "/usr/local/lib/python3.6/dist-packages/flask/app.py", line 1599, in ensure_sync
    return self.async_to_sync(func)
  File "/usr/local/lib/python3.6/dist-packages/flask/app.py", line 1622, in async_to_sync
    ) from None
RuntimeError: Install Flask with the 'async' extra in order to use async views.
172.17.0.1 - - [12/Dec/2021 04:42:36] "GET /?x=,.., HTTP/1.1" 500 -
Run Code Online (Sandbox Code Playgroud)

小智 17

pip install flask[async]按照文档安装带有异步额外功能的 Flask

  • 它需要引号: pip install "Flask[async]" (7认同)

小智 14

就我而言,这个问题是通过安装包“asgiref”解决的。

pip install asgiref
Run Code Online (Sandbox Code Playgroud)

安装 Flask 时,不会安装异步视图的要求“asgiref”。默认情况下考虑使用同步视图。所以需要你自己安装。您可以在2.0.2版本的Line1618中找到错误[PYTHON_PATH]/Lib/site-packageflask/app.py。此错误只会引发 import asgiref 错误。


小智 8

我解决了同样的错误:

pip install aioflask
Run Code Online (Sandbox Code Playgroud)

所以再次运行烧瓶:

run flask
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助其他人


小智 7

安装时不要\xe2\x80\x99忘记引号

\n

pip install "Flask[async]\xe2\x80\x9d

\n


Suy*_*mpi 4

首先你需要使用@app.route而不是@app.routes. 您还需要安装aioflaskflask克服这个问题RuntimeError

检查下面的简单示例 -

from flask import Flask

app = Flask(__name__)
app.env = "development"


@app.route('/')
async def home():
    return {"text": "Hello!"}


if __name__ == '__main__':
    app.run(debug=True)
Run Code Online (Sandbox Code Playgroud)