问题标签 [uvicorn]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1366 浏览

docker - Gunicorn/Uvicorn 工作人员在 AWS Fargate 上超时

我尝试在 AWS Fargate 上部署我的 FastAPI 应用程序,并在其前面使用应用程序负载均衡器。应用程序调用 AWS Aurora。我的堆栈如下

  • Python 3.7.4
  • 优维康 0.11.3
  • 独角兽 19.9.0
  • 快速API 0.53.2
  • 异步PG 0.20.1

我的容器在本地或 EC2 实例上部署时运行良好,但在 Fargate 上部署时工作人员在引导期间超时。日志没有给我任何线索什么是错的(见下文)。

我试图克服这个问题的事情:

  • 增加 Fargate 任务的内存
  • 放宽安全组设置
  • 增加 gunicorn 超时值

它没有任何效果。

但是,当尝试部署准系统 FastAPI 应用程序(只有一个根路由,没有依赖项)时,应用程序设法启动,我可以通过负载均衡器访问它。添加自定义路由后,就会出现问题。

我还需要什么其他选项来调试它?如果 guincorn 无法启动我的工人,有没有办法记录问题?

0 投票
1 回答
2591 浏览

python - 使用 UvicornWorker 时 Gunicorn 不遵守超时

我正在设置超时检查,所以我做了和端点:

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

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

0 投票
0 回答
3168 浏览

django-channels - 如何使用 nginx 和 django chanels 设置 gunicorn 和 uvicorn?

我被这个问题困住了,我需要帮助。我正在尝试使用 django-channels 配置 nginx 服务器,并且我有以下配置
Nginx


独角兽:

我使用本教程来配置 gunicorn,但是对于 websocket,我在django-channel 网站上读到,我必须使用主管设置 daphne,我不知道如何也找不到如何做到这一点。有人可以帮助我提供一些有关如何执行此操作的教程或提示,或者有人可以向我解释需要什么主管吗?我读到 uvicorn 很容易使用 gunicorn 和 django-chanels 安装和配置,但我还是没有发现如何做到这一点。

0 投票
2 回答
1060 浏览

graphene-django - 从 Uvicorn 运行时,Django 石墨烯 GraphiQL 页面未加载

不知道我设置错了什么,但在 uvicorn 中运行时我没有得到 graphiql 界面uvicorn mysite.asgi:application

但是当我这样做时它加载得很好python manage.py runserver

这是我安装的:

在 settings.py 我有:

0 投票
2 回答
2419 浏览

python - Django + Uvicorn

我正在尝试将 Django 3.0 与 Uvicorn 一起使用并开始使用:

我可以用标志关闭寿命--lifespan off,但有没有办法让它与 Django 一起工作?快速搜索 Django + lifespan 似乎没有返回任何内容。

0 投票
2 回答
4691 浏览

python - 在 python-fastApi 中间件中引发异常

我正在尝试在 fastapi 中间件中验证令牌,但这似乎是不可能的。正如我在想中间件需要进行下一次调用,尽管它不是必需的。我无法在这个 python-fastapi 后端找到任何好的解决方案来一次性处理令牌。任何帮助表示赞赏。

0 投票
0 回答
269 浏览

python - 同一个 Uvicorn 工作者的并发任务是否使用相同的 python 上下文?

我已经将 FastAPI 用于 Web api,并且我也在使用 python 上下文变量。我知道 Uvicorn 的工作人员可以完成多个并发任务的许多请求。

这些任务是否在相同的上下文中运行?如果我在一个任务中设置了一个上下文变量,它可以在另一个任务中读取吗?

0 投票
0 回答
353 浏览

python - 使用 Starlette 和 Uvicorn 进行 Python 日志记录时,文件句柄过多(在 lsof 上)

我有一个通过 uvicorn 运行的最小的 starlette 应用程序,除了返回一个 ping 之外什么都不做。奇怪的是,即使只有一个线程,我的日志文件也有 45 个文件句柄。句柄随着应用程序的命中而增加,并在 45 处保持稳定。我正在使用 lsof 计算文件句柄:

当然,这是一个最小的再生产。实际上,我的整个应用程序正在生成数千个文件句柄。一些(~200)我希望给定线程*控制器模块。但是,我无法解释创建数千个文件句柄的位置。在我的真实程序中,它们也不会停滞不前,它们会永远增长。

这是我的应用程序(api.py):

我这样在命令行上运行它:

我使用一个简单的脚本测试应用程序:

这是在 Ubuntu 18.04 上运行的,starlette==0.13.3 和 uvicorn==0.11.3 在 Python 3.6 上

作为比较,运行 w/o starlette+uvicorn 时没有这样的效果。以下控制程序将在 lsof 上生成 2 个且仅 2 个文件句柄:

为什么在介绍starlette和uvicorn时会创建这么多文件句柄,就像我在lsof上看到的那样?

0 投票
0 回答
973 浏览

nginx - Uvicorn 没有随机处理一些请求

我们正在运行一个 Fastapi + Uvicorn Web 应用程序,使用 gunicorn 作为进程管理器,使用 Nginx 作为反向代理服务器。对于大多数 i/o 操作(数据库调用、Rest api),应用程序以异步模式运行。整个设置在 Ubuntu 16.04 上的 Docker 容器中运行。

该设置在大多数情况下都有效,但有时它根本不处理请求,并且在 Nginx 端超时。我们还尝试将 Nginx 排除在设置之外,并观察到在很长一段时间后(比如 15 分钟后)很少有请求得到处理。这是非常随机的,但通常在一小时内发生 2-3 次。

下面是我们正在使用的 gunicorn 配置 –</p>

并使用命令调用 gunicornexec gunicorn -k uvicorn.workers.UvicornWorker -c "$GUNICORN_CONF" "$APP_MODULE"

我们已经尝试了一些配置更改,例如 –</p>

  1. 改变工人数量,工人超时
  2. 将进程管理器从 gunicorn 更改为 supervisord
  3. 将 CPU 密集型任务卸载到 Celery 而不是线程
  4. 将 uvicorn 应用程序绑定到 unix 套接字而不是代理服务器
0 投票
0 回答
446 浏览

python - 为什么 django logging-config 未应用于所有记录器实例?

Python 3.8、Django 3.0

我使用docker-compose logsdjango 来显示和处理容器的日志。为确保所有输出具有相同的格式,我LOGGING在内部定义settings.py

但是,在运行容器时,我在日志中得到以下输出:

如您所见,uvicorn 使用我指定的 logging.config。但是,这一调用WARNING: Detected file change in 'myproject/settings.py'. Reloading...不遵循该模式。这很奇怪,因为消息在内部被lib/python3.8/site-packages/uvicorn/supervisors/statreload.py调用

至少这就是我认为这个警告的来源。那么为什么我的配置不适用于此?

在试图找出问题的根源时,我发现了一件更奇怪的事情:

当我直接在其中调用记录器时,settings.py它也不会应用配置:

只会显示

但是当我在视图中使用相同的代码时,myapp/views.py我得到

因此,问题的根源似乎不是 uvicorn,而是日志配置仅适用于某些特定模块?

这里到底有什么问题?为什么这行为如此奇怪?还是我理解错了?