标签: uvicorn

无法从 Docker 容器访问本地主机

问题

我有两个 Docker 容器:

  • 一个服务器运行 fastapi;uvicorn
  • 客户端发送GET请求http://0.0.0.0

服务器似乎工作得很好,因为攻击curl -X GET http://0.0.0.0按预期工作。但是,我的 docker 客户端似乎无法访问。

构建客户端容器(下面的文件)后,运行时docker run -it --name app_client_container app_client:latest我收到以下错误:

requests.exceptions.ConnectionError: HTTPConnectionPool(host='0.0.0.0', port=80): Max retries exceeded with url: / (Caused by NewConnectionError(': Failed to build a new connection: Errno 111 Connection denied'))

设置

我的项目看起来像这样

|- client.Dockerfile
|- client.py
|- client_req.txt
|- server.Dockerfile
|- server.py
|- server_req.txt
Run Code Online (Sandbox Code Playgroud)

客户

# client.Dockerfile
FROM python:3.8

WORKDIR /srv
WORKDIR /srv
ADD client_req.txt /srv/client_req.txt
RUN pip install -r client_req.txt

ADD …
Run Code Online (Sandbox Code Playgroud)

python docker fastapi uvicorn

4
推荐指数
1
解决办法
6775
查看次数

使用 UvicornWorker 时,Gunicorn 不考虑超时

我正在设置超时检查,因此我进行了端点:

@app.get("/tc", status_code=200)
def timeout_check():
    time.sleep(500)
    return "NOT OK"
Run Code Online (Sandbox Code Playgroud)

我正在使用 docker 映像tiangolo/uvicorn-gunicorn-fastapi:python3.7 和命令来运行服务器:

CMD ["gunicorn","--log-level","debug","--keep-alive","15", "--reload", "-b", "0.0.0.0:8080", "--timeout", "15", "--worker-class=uvicorn.workers.UvicornH11Worker", "--workers=10", "myapp.main:app"]
Run Code Online (Sandbox Code Playgroud)

我预计端点会在 15 秒后失败,但事实并非如此。似乎没有遵守超时。有什么解决办法吗?

python gunicorn fastapi uvicorn

4
推荐指数
1
解决办法
5831
查看次数

FastApi sqlalchemy 连接在操作过程中关闭

我有一个带有异步 sqlalchemy 的异步 FastApi 应用程序,源代码(不会提供 schemas.py,因为没有必要):

数据库.py

from sqlalchemy import (
    Column,
    String,
)
from sqlalchemy.ext.asyncio import AsyncSession, create_async_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
from sqlalchemy.orm.decl_api import DeclarativeMeta

from app.config import settings


engine = create_async_engine(settings.DATABASE_URL)
Base: DeclarativeMeta = declarative_base()
async_session = sessionmaker(engine, class_=AsyncSession, expire_on_commit=False)


class Titles(Base):
    __tablename__ = "titles"
    id = Column(String(100), primary_key=True)
    title = Column(String(100), unique=True)


async def get_session() -> AsyncSession:
    async with async_session() as session:
        yield session
Run Code Online (Sandbox Code Playgroud)

路由器.py

import .database
from fastapi_utils.cbv import cbv
from …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy asyncpg fastapi uvicorn

4
推荐指数
1
解决办法
4381
查看次数

我尝试通过“pip install”uvicorn[standard]“”安装u​​vicorn,出现以下错误:

error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": https://visualstudio.microsoft.com/downloads/
Run Code Online (Sandbox Code Playgroud)

我继续下载了Microsoft C++ 构建工具

我应该安装什么?因为有一堆东西

python rest web-development-server fastapi uvicorn

4
推荐指数
1
解决办法
1万
查看次数

错误:加载 ASGI 应用程序时出错。导入字符串“main”必须采用“<模块>:<属性>”格式

尝试使用 uvicorn 测试我的第一个 FastAPI 应用程序。

在Jupyter Notebook上编写以下代码并保存'main.py'在目录中:/home/user

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}
Run Code Online (Sandbox Code Playgroud)

从我正在运行的同一目录:

$uvicorn main --reload
Run Code Online (Sandbox Code Playgroud)

它抛出以下错误:

错误:加载 ASGI 应用程序时出错。导入字符串“main”必须采用“:”格式。

asgi fastapi uvicorn

4
推荐指数
1
解决办法
7171
查看次数

仅具有异步端点的 FastAPI 应用程序会遇到 GIL 问题吗?

如果所有 fastapi 端点都定义为async def,那么只会有 1 个线程在运行,对吗?(假设有一个独角兽工人)。

只是想确认在这样的设置中,我们永远不会遇到 python 的全局解释器锁。如果在一个具有多个线程的 Flask 框架中为单个 Gunicorn Worker 做同样的事情,那么我们将面临 GIL,它阻碍了线程之间真正的并行性。

所以基本上,在上面的 fastapi 中,并行度限制为 1,因为只有一个线程。为了利用所有核心,我们需要增加使用 Gunicorn 或 uvicorn 的工作人员数量。

我的理解正确吗?

python gil gunicorn fastapi uvicorn

4
推荐指数
1
解决办法
1861
查看次数

尽管安装并添加了路径变量,但无法在 Windows 上运行 uvicorn 命令

如标题所示,我已经使用powershell安装了uvicorn,并添加了环境变量。但每当我运行该命令时,我都会遇到同样的错误。我知道我一定在做一些小而愚蠢的事情,但是遵循 SO 上的每个答案都告诉我同样的事情,而且我根本没有任何线索。

环境变量 错误屏幕

python windows fastapi uvicorn windows-terminal

3
推荐指数
1
解决办法
1万
查看次数

如何在 Google Colab 中运行 FastAPI / Uvicorn?

我正在尝试使用 FastAPI / Uvicorn 在 Google Colab 上运行“本地”网络应用程序,就像我见过的一些 Flask 应用程序示例代码一样,但无法使其工作。有没有人能够做到这一点?欣赏它。

成功安装 FastAPI & Uvicorn

!pip install FastAPI -q
!pip install uvicorn -q
Run Code Online (Sandbox Code Playgroud)

示例应用程序

from fastapi import FastAPI

app = FastAPI()


@app.get("/")
async def root():
    return {"message": "Hello World"}
Run Code Online (Sandbox Code Playgroud)

运行尝试

#attempt 1
if __name__ == "__main__":
    uvicorn.run("/content/fastapi_002:app", host="127.0.0.1", port=5000, log_level="info")
Run Code Online (Sandbox Code Playgroud)

#attempt 2
#uvicorn main:app --reload
!uvicorn "/content/fastapi_001.ipynb:app" --reload
Run Code Online (Sandbox Code Playgroud)

python google-colaboratory fastapi uvicorn

3
推荐指数
1
解决办法
1448
查看次数

FastAPI 与 uvicorn 出现 404 Not Found 错误

我正在尝试(失败)建立一个简单的 FastAPI 项目并使用 uvicorn 运行它。这是我的代码:

from fastapi import FastAPI

app = FastAPI()

app.get('/')

def hello_world():
    return{'hello':'world'}

app.get('/abc')

def abc_test():
    return{'hello':'abc'}
Run Code Online (Sandbox Code Playgroud)

这是我从终端运行的:

PS C:\Users\admin\Desktop\Self pace study\Python\Dev\day 14> uvicorn server2:app   
INFO:     Started server process [3808]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO:     127.0.0.1:60391 - "GET / HTTP/1.1" 404 Not Found
INFO:     127.0.0.1:60391 - "GET /favicon.ico HTTP/1.1" 404 Not Found
Run Code Online (Sandbox Code Playgroud)

如您所见,我得到了 404 未找到。可能是什么原因?一些与网络相关的东西,可能是防火墙/VPN 阻止此连接或其他什么?我对此很陌生。提前致谢!

python fastapi uvicorn

3
推荐指数
2
解决办法
2万
查看次数

如何让 uvicorn 运行异步构建的应用程序?

鉴于main.py

import asyncio

async def new_app():
    # Await some things.

    async def app(scope, receive, send):
        ...

    return app

app = asyncio.run(new_app())
Run Code Online (Sandbox Code Playgroud)

其次是:

uvicorn main.app
Run Code Online (Sandbox Code Playgroud)

给出:

RuntimeError: asyncio.run() cannot be called from a running event loop
Run Code Online (Sandbox Code Playgroud)

这是因为uvicorn在导入我的应用程序之前已经启动了一个事件循环。如何在 下异步构建应用程序uvicorn

python async-await python-asyncio asgi uvicorn

3
推荐指数
2
解决办法
1570
查看次数