首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python 3.6.10上运行异步Flask 2.0.0时出错

在Python 3.6.10上运行异步Flask 2.0.0时出错
EN

Stack Overflow用户
提问于 2021-05-26 12:29:12
回答 1查看 566关注 0票数 2

我尝试在python 3.6.10上以异步方式运行Flask,但不断收到:

代码语言:javascript
复制
RuntimeError: Async cannot be used with this combination of Python and Greenlet versions.

我已经编写了以下简单的脚本来测试flask异步功能:

代码语言:javascript
复制
from flask import Flask
import asyncio

app = Flask(__name__)

async def load_user_from_database():
    """Mimics a long-running operation to load a user from an external database."""
    app.logger.info('Loading user from database...')
    await asyncio.sleep(1)

@app.before_request
async def add_drink():
    await load_user_from_database()

升级到python 3.9.2似乎解决了这个问题,但对于我的应用程序,我被迫使用python 3.6.10,因此欢迎任何建议,使其在较新的python版本上工作。

附注:以下是这个简单应用程序的requirements.txt:

代码语言:javascript
复制
aiohttp==3.7.4.post0
asgiref==3.3.4
async-timeout==3.0.1
attrs==20.3.0
certifi==2020.12.5
chardet==4.0.0
click==8.0.0rc1
Flask==2.0.0
idna==2.10
iniconfig==1.1.1
itsdangerous==2.0.0
Jinja2==3.0.0
MarkupSafe==2.0.0rc2
multidict==5.1.0
packaging==20.9
pluggy==0.13.1
py==1.10.0
pyparsing==2.4.7
pytest==6.2.4
pytest-asyncio==0.15.1
requests==2.25.1
toml==0.10.2
typing-extensions==3.10.0.0
urllib3==1.26.4
Werkzeug==2.0.0
yarl==1.6.3
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-26 16:32:01

Flask 2.0中的Flask.async_to_sync()需要ContextVar。如果您不使用Greenlet,那么在Flask中对async支持的最低Python要求是3.7 (当引入contextvars时)。如果您使用的是Greenlet,则还取决于Greenlet的版本。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67698544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档