问题标签 [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.
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 无法启动我的工人,有没有办法记录问题?
python - 使用 UvicornWorker 时 Gunicorn 不遵守超时
我正在设置超时检查,所以我做了和端点:
我正在使用 docker 映像tiangolo/uvicorn-gunicorn-fastapi:python3.7
和我的命令来运行服务器:
我预计端点会在 15 秒后失败,但事实并非如此。似乎超时不受尊重。有什么解决办法吗?
django-channels - 如何使用 nginx 和 django chanels 设置 gunicorn 和 uvicorn?
我被这个问题困住了,我需要帮助。我正在尝试使用 django-channels 配置 nginx 服务器,并且我有以下配置
Nginx:
独角兽:
我使用本教程来配置 gunicorn,但是对于 websocket,我在django-channel 网站上读到,我必须使用主管设置 daphne,我不知道如何也找不到如何做到这一点。有人可以帮助我提供一些有关如何执行此操作的教程或提示,或者有人可以向我解释需要什么主管吗?我读到 uvicorn 很容易使用 gunicorn 和 django-chanels 安装和配置,但我还是没有发现如何做到这一点。
graphene-django - 从 Uvicorn 运行时,Django 石墨烯 GraphiQL 页面未加载
不知道我设置错了什么,但在 uvicorn 中运行时我没有得到 graphiql 界面uvicorn mysite.asgi:application
:
但是当我这样做时它加载得很好python manage.py runserver
这是我安装的:
在 settings.py 我有:
python - Django + Uvicorn
我正在尝试将 Django 3.0 与 Uvicorn 一起使用并开始使用:
我可以用标志关闭寿命--lifespan off
,但有没有办法让它与 Django 一起工作?快速搜索 Django + lifespan 似乎没有返回任何内容。
python - 在 python-fastApi 中间件中引发异常
我正在尝试在 fastapi 中间件中验证令牌,但这似乎是不可能的。正如我在想中间件需要进行下一次调用,尽管它不是必需的。我无法在这个 python-fastapi 后端找到任何好的解决方案来一次性处理令牌。任何帮助表示赞赏。
python - 同一个 Uvicorn 工作者的并发任务是否使用相同的 python 上下文?
我已经将 FastAPI 用于 Web api,并且我也在使用 python 上下文变量。我知道 Uvicorn 的工作人员可以完成多个并发任务的许多请求。
这些任务是否在相同的上下文中运行?如果我在一个任务中设置了一个上下文变量,它可以在另一个任务中读取吗?
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上看到的那样?
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>
- 改变工人数量,工人超时
- 将进程管理器从 gunicorn 更改为 supervisord
- 将 CPU 密集型任务卸载到 Celery 而不是线程
- 将 uvicorn 应用程序绑定到 unix 套接字而不是代理服务器
python - 为什么 django logging-config 未应用于所有记录器实例?
Python 3.8、Django 3.0
我使用docker-compose logs
django 来显示和处理容器的日志。为确保所有输出具有相同的格式,我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,而是日志配置仅适用于某些特定模块?
这里到底有什么问题?为什么这行为如此奇怪?还是我理解错了?