python 运行时间错误:安装Flask,并额外添加'async',以便使用异步视图

fnvucqvd  于 2023-08-02  发布在  Python
关注(0)|答案(8)|浏览(809)

当我尝试使用docker run(localize)在本地运行时,我得到了下面的错误。但是,我已经运行了“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))

个字符

oxiaedzo

oxiaedzo1#

在我的例子中,这个问题是通过安装包“asgiref”修复的。

pip install asgiref

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

slmsl1lt

slmsl1lt2#

我解决了相同错误:

pip install aioflask

字符串
所以再次运行 flask :

run flask


希望这对其他人有帮助

6rvt4ljy

6rvt4ljy3#

根据文档使用async extra pip install flask[async]安装flask

hec6srdp

hec6srdp4#

首先,您需要使用@app.route而不是@app.routes。您还需要安装aioflask沿着flask来克服这个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)

字符串

iaqfqrcu

iaqfqrcu5#

pip install aioflask

字符串
而不是

from flask import Flask
from flask import request
from flask import Response


写入from aioflask import Flask, request, Response

pieyvz9o

pieyvz9o6#

安装时不要忘记报价
Pip install“Flask[async]”

ulydmbyx

ulydmbyx7#

我也有同样的问题。我尝试卸载Flask并使用async extra重新安装Flask。它工作正常。

pip uninstall flask
pip install flask[async]

字符串

nzk0hqpo

nzk0hqpo8#

如果Flask安装了async extra (pip install flask[async]),那么路由、错误处理程序、before request、after request和teardown函数都可以是协程函数。这允许使用async def定义视图并使用await
有关详细信息,请参阅Official Docs

相关问题