标签: uvicorn

FastAPI 抛出错误(错误加载 ASGI 应用程序。无法导入模块“api”)

我尝试使用 uvicorn 网络服务器运行 FastAPI,但它引发了错误。

我运行这个命令,

uvicorn api:app --reload --host 0.0.0.0

但是终端有错误。

Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
Started reloader process [23445]
Error loading ASGI app. Could not import module "api".
Stopping reloader process [23445]
Run Code Online (Sandbox Code Playgroud)

我真的很感激任何建议或建议

python fastapi uvicorn

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

Gunicorn gevent 工人 vs Uvicorn ASGI

我目前正在 Django 中开发一个服务,它使用一个缓慢的外部 API(需要大约 10 秒才能获得响应),这意味着与我的服务器的连接保持打开状态,等待外部 API 响应,并占用工作时间/资源。

我知道我可以使用 gunicorn 的线程或 gevent 工作人员来添加并发性,但似乎无法掌握将 gunicorn 与 gevent 工作人员一起使用和将 uvicorn(或任何其他服务器)与 asgi 接口一起使用之间的确切区别。

使用其中一种的标准是什么?

Django 仍然不完全支持 async/await 视图。如果我坚持使用 gevent 工人会更好吗?

python django gunicorn asgi uvicorn

27
推荐指数
1
解决办法
7732
查看次数

Python uvicorn:术语“uvicorn”不被识别为 cmdlet、函数、脚本文件的名称

晚上好,

\n

我正在使用 python 3.9 并尝试根据互联网上的文档在 Windows 10 Pro 上运行新的 FastAPI 服务https://www.uvicorn.org/我执行了以下语句

\n
pip install uvicorn pip install uvicorn[standard]\n
Run Code Online (Sandbox Code Playgroud)\n

创建示例文件 app.py

\n
from fastapi import FastAPI\n\napp = FastAPI()\n\n\n@app.get("/")\nasync def root():\n    return {"message": "Hello World"}\n
Run Code Online (Sandbox Code Playgroud)\n

但是当我运行下面的代码时:

\n
uvicorn main:app --reload\n\n\nuvicorn : The term \'uvicorn\' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify t\nhat the path is correct …
Run Code Online (Sandbox Code Playgroud)

python fastapi uvicorn

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

如何在 FastAPI 中进行多处理

在处理 FastAPI 请求时,我有一个受 CPU 限制的任务要对列表的每个元素执行。我想在多个 CPU 内核上进行此处理。

在 FastAPI 中执行此操作的正确方法是什么?我可以使用标准multiprocessing模块吗?到目前为止,我发现的所有教程/问题仅涵盖 I/O 绑定任务,如 Web 请求。

python multiprocessing python-asyncio fastapi uvicorn

18
推荐指数
1
解决办法
9382
查看次数

使用 uvicorn.run 启动 FastAPI 应用程序时会导致 404 错误响应

FastAPI 和 uvicorn 的新手,但我想知道为什么当我通过从命令行使用 uvicorn 启动它来运行我的“hello world”服务时,它工作正常,但是当从我的服务内部使用“uvicorn.run”方法时,服务启动,但是当我发送 GET 时,我总是得到一个404响应正文为{"detail": "Not Found"}?

这是我的代码:

import uvicorn
from fastapi import FastAPI

app = FastAPI()
uvicorn.run(app, host="127.0.0.1", port=5049)


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

总是返回 404,如下所示:

# curl http://127.0.0.1:5049/
{"detail":"Not Found"}
Run Code Online (Sandbox Code Playgroud)

我的服务的输出显示:

INFO:     Started server process [28612]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://127.0.0.1:5049 (Press CTRL+C to quit)
INFO:     127.0.0.1:55446 - "GET / HTTP/1.1" 404 Not Found
Run Code Online (Sandbox Code Playgroud)

如果我注释掉“uvicorn.run”行,然后从命令行启动该服务(在 Windows 10 上运行): …

http-status-code-404 python-3.x fastapi uvicorn

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

FastAPI python:如何在后台运行线程?

我正在使用 FastAPI 在 python 中创建一个服务器,并且我想要一个与我的 API 无关的函数,每 5 分钟在后台运行一次(例如从 API 检查内容并根据响应打印内容)

我尝试创建一个运行该函数的线程start_worker,但它不打印任何内容。

有谁知道该怎么做?

def start_worker():
    print('[main]: starting worker...')
    my_worker = worker.Worker()
    my_worker.working_loop() # this function prints "hello" every 5 seconds

if __name__ == '__main__':
    print('[main]: starting...')
    uvicorn.run(app, host="0.0.0.0", port=8000, reload=True)
    _worker_thread = Thread(target=start_worker, daemon=False)
    _worker_thread.start()
Run Code Online (Sandbox Code Playgroud)

python multithreading fastapi uvicorn

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

如何在 Heroku 中运行 UVICORN?

所以我已经想出了如何编写 fastAPI 并且我准备将我的脚本部署到我使用过 fastAPI ( https://fastapi.tiangolo.com/ ) 的heroku但是问题是当我向 heroku 发出请求时它只会返回:

<html>
  <head>
    <title>Internal Server Error</title>
  </head>
  <body>
    <h1><p>Internal Server Error</p></h1>

  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

这意味着脚本已打开,但我看不到错误,并且我会说在本地它完全正常。

我无法看到问题所在的任何日志,但是我想说我的问题可能是我不确定我的procfile是否正确,因为我根本没有编辑它而且我对此很陌生,我在这里请问我如何能够在heroku中运行我的fastapi脚本?

我所知道的是,为了能够运行脚本,您必须使用命令uvicorn main:app --reload,如果您这样做,它将无法工作等py main.py我做错了什么?

python heroku fastapi uvicorn

16
推荐指数
3
解决办法
5938
查看次数

uvicorn [fastapi] python 同时运行 HTTP 和 HTTPS

我正在尝试使用 SSL 运行 fastapi 应用程序。

我正在使用 uvicorn 运行该应用程序。

我可以使用 HTTP 在端口 80 上运行服务器,

if __name__ == '__main__':
    uvicorn.run("main:app", port=80, host='0.0.0.0', reload = True, reload_dirs = ["html_files"])
Run Code Online (Sandbox Code Playgroud)

要使用 HTTPS 运行端口,我执行以下操作:

if __name__ == '__main__':
    uvicorn.run("main:app", port=443, host='0.0.0.0', reload = True, reload_dirs = ["html_files"], ssl_keyfile="/etc/letsencrypt/live/my_domain/privkey.pem", ssl_certfile="/etc/letsencrypt/live/my_domain/fullchain.pem")
Run Code Online (Sandbox Code Playgroud)

我如何运行两者或简单地集成 https 重定向?

注意:这是在我不想使用 nginx 的服务器上进行的设置,我知道如何使用 nginx 来实现 https 重定向。

ssl http-redirect python-3.x fastapi uvicorn

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

Uvicorn的目的是什么?

我应该使用 FastAPI。我被告知 FastAPI 与 Uvicorn 一起使用。Uvicorn到底是什么。我不知道 uvicorn 到底用 FastAPI 做什么。谁能解释一下吗?

frameworks web-frameworks python-3.x fastapi uvicorn

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

有没有办法干净地杀死 uvicorn?

有没有办法干净地杀死 uvicorn?

即,如果它在终端的前台运行,我可以在它上面键入 ^C。这会导致 uvivorn 进程终止,并且所有工作进程都将被清理。(即,他们走开了。)

另一方面,如果 uvicorn 在没有终端的情况下在后台运行,那么我无法想出一种干净地杀死它的方法。它似乎忽略了 SIGTERM、SIGINT 和 SIGHUP。我可以用SIGKILL(即-9)杀死它,但是工作进程仍然存在,我必须跟踪所有工作进程并杀死它们。这并不理想。

我在 Red Hat Enterprise Linux Server 7.3 (Maipo) 上使用带有 CPython 3.7.4、uvivorn 版本 0.11.2 和 FastAPI 0.46.0 的 uvicorn。

python python-3.x fastapi uvicorn

15
推荐指数
2
解决办法
5274
查看次数