问题标签 [starlette]

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 投票
2 回答
6033 浏览

python - 使用 websockets 优雅关闭 uvicorn starlette 应用程序

给定这个带有开放 websocket 连接的示例 Starlette 应用程序,您如何关闭 Starlette 应用程序?我正在运行 uvicorn。每当我按下Ctrl+C输出时,Waiting for background tasks to complete.它就会永远挂起。

我尝试在关闭事件上切换一个布尔变量,但该变量永远不会更新。它总是False

例如。

0 投票
1 回答
349 浏览

python-3.x - 如何连接 hypercorn 和 starlette 网络框架

我能够使用 gunicorn 和 uvloop 启动并运行它,但很难让它与 hypercorn 一起使用。另一个问题是指定 ASGI 框架的工作人员数量。

0 投票
0 回答
305 浏览

python - “oauth.google.authorize_redirect()”返回错误 500:“httpx.exceptions.ConnectTimeout”

我实际上正在使用带有 authlib 的 starlette 框架进行 Google OAuth 身份验证的平台上工作。

从今天开始,我500 Internal Server Error在调用时遇到oauth.google.authorize_redirect(request, redirect_uri)错误httpx.exceptions.ConnectTimeout

我完全迷失了这种新的行为。我可以使用以下demo-oauth-client提供的存储库重现它authlibhttps ://github.com/authlib/demo-oauth-client/tree/master/starlette-google-login

app.py 是:

.env文件是:

对这种新行为有任何想法吗?我完全迷失了。谢谢 !!

0 投票
0 回答
1413 浏览

python - RuntimeError:无法对 TCPTransport 执行操作,处理程序已关闭

我正在尝试使用工具在我的本地机器上进行 HTTP 基准测试,该工具适用于我在+autocannon上构建的全新的项目设置。FastAPIuvicorn

但是在某些时候或随机(我不知道发生了什么)我遇到了一个 ASGI 异常。

要启动我的应用程序,我会:

我试图增加工人的数量。我仍然得到这些例外。

为了进行基准测试,我这样做:

PS:我的数据库(PostgreSQL)在Docker容器上工作。而且我还进行异步数据库交互(当然)。也许添加此信息会有所帮助。

0 投票
1 回答
2356 浏览

python - Python 日志记录 - 如何禁用包的日志记录?

我被这个问题逼疯了。我只想使用我的 basicConfig 进行日志记录,但模块(uvicorn)也正在记录到文件中。

例子:

我不希望出现第二条消息,因为它是重复的...如何禁用它?

更新:使用的代码...

设置 access-log = False 后记录。我打了几次API:

当 access_log = True 时记录:

0 投票
1 回答
587 浏览

python-3.x - python starlette中的自定义异常

我正在尝试使用 python 中的 starlette 框架引发自定义异常。我有检查某些条件的 API 调用取决于结果,它应该引发异常。我有两个文件 app.py 和 error.py

当条件为真时,我想引发异常,但它不返回 jsonrespnse,而是返回控制台上的堆栈跟踪。如果这里有什么问题,请告诉我

0 投票
1 回答
1754 浏览

fastapi - 如何在 Starlette/FastAPI 中进行客户端证书验证 (mTLS)

我正在考虑使用 FastAPI 框架来实现相当简单的 API,但它需要支持 mTLS。AFAIK FastAPI 基于 Starlette。是否可以在 Starlette 中检查客户证书?

0 投票
2 回答
4745 浏览

static-files - 使用 FastAPI/Starlette 提供静态文件时的相对 URL 路径

我有一个简单的 FastAPI 应用程序,它像这样提供test.html文件app/main.py

目录结构是这样的:

我可以更改此操作以使其与修改后的目录结构一起使用,app/并且static/是兄弟姐妹吗?

我已经尝试过return FileResponse('../static/test.html'),但到目前为止还没有奏效;产生的错误是“RuntimeError:路径 ../static/test.html 中的文件不存在。”

0 投票
0 回答
1704 浏览

python-3.x - 有没有办法使用 Python 后端服务器检索客户端 IP 地址

有问题的设置如下所示:

我的 web 应用程序使用和fastapi部署工作人员类,位于具有 IP 地址的同一主机上的代理后面(以及其他远程设备,如 VPN 集中器等)gunicornuvicornnginx172.31.x.x

nginx配置如下:

gunicorn配置如下:

fastapi使用starlette.requests.Request对象(名为request)时,request.client.host打印托管 Web 应用程序的服务器的接口 IP 地址(即172.31.x.x

request.headers["x-real-ip"], request.headers["x-forwarded-for"]两者都在我的代理之前打印设备的 IP 地址,这是我公司众所周知的防火墙设备。

我想问的是:

  1. 是否可以打印整个X-Forwarded-ForHTTP 标头以查看中间代理服务?
  2. 如何检索我的最终用户的真实客户端 IP 地址(基本上覆盖众所周知的白名单 IP 地址)?
0 投票
7 回答
15739 浏览

python - FastAPI (starlette) 获取客户端真实IP

我在 FastAPI 上有一个 API,当他请求我的页面时,我需要获取客户端的真实 IP 地址。

我很喜欢使用 starlette Request。但它返回我的服务器 IP,而不是客户端远程 IP。

我的代码:

我做错了什么?如何获取真实 IP(如 Flask request.remote_addr)?