问题标签 [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 投票
1 回答
1584 浏览

python - 使用 starlette 配置的 Fastapi 数据库测试隔离

如何为测试目的准确配置数据库。我做错了什么,我已经阅读了网站上的 starlette 配置,但我认为我没有正确理解它。我尝试构建它,但收到以下错误消息:

conftest.py 中的 Starlette 配置

数据库配置

0 投票
0 回答
844 浏览

python-3.x - FastAPI - 是否有可能有一个同步的 websocket 端点?

我正在使用 FastAPI 创建一个 websocket 端点,但我有很多同步应用程序代码,我想在不创建异步包装器的情况下使用它们。但由于所有 websocket 方法似乎都是异步的,我试图将它们包装在一个同步实用程序函数中。

问题在于run_sync. 我按照这里的建议尝试了以下操作:https ://websockets.readthedocs.io/en/stable/faq.html

我可以在没有 async / await 的情况下同步使用 websockets 吗?您可以通过将每个异步调用包装在 asyncio.get_event_loop().run_until_complete(...) 中将其转换为同步调用。

但:

也试过这个:

但:

在https://www.aeracode.org/2018/02/19/python-async-simplified/找到另一个建议,但我认为这不适用于 FastAPI。

有可能做我想做的事吗?提前致谢。

0 投票
2 回答
557 浏览

nginx - Starlette 的 url_for 不会在 Nginx 后面创建带有 https 方案的链接(通过 uvicorn)

我已经尝试了一切:

@小星:

@Uvicorn:

@url_for:

@nginx:

如果我打开 .css 或 .js 链接,nginx 会将其呈现为 https。

当我允许 Firefox 忽略不安全的内容时,整个页面会在生产服务器上正确呈现。

Let's encrypt 适用于整个域,证书没有问题。

0 投票
1 回答
175 浏览

python-3.x - 如何禁用 Starlette 静态文件缓存?

我在 Python 应用程序中使用 Starlette 框架,并按照文档的要求配置了静态文件:

问题是 Starlette 正在执行这些静态文件的自动缓存,并且文档中没有关于如何禁用缓存的信息。

我尝试了 asgi-caches 但我很快看到它配置了缓存但现在似乎无法禁用缓存。

文档中唯一提到禁用缓存告诉您它是一个“TODO”并且是处理视图而不是静态文件的装饰器。

有谁知道如何配置框架以保证 Starlette 不缓存我的静态文件?

0 投票
1 回答
1378 浏览

python - 覆盖 fastAPI 的 HTTPException 响应体

我目前正在为 fastAPI 中的 API 编写一些端点。我正在定义扩展 fastapi 的 HTTPException 的类。

问题是 HTTPException 返回一个带有一个名为 detail 的属性的响应正文,该属性将是一个字符串或一个 json 结构,具体取决于您传递给它的对象,如下所示。

我想覆盖此行为并让它以我自己的结构响应。

我知道我可以使用异常处理程序装饰器安装自定义异常并让它返回一个 JSONResponse 对象,但这不是我想要的。

0 投票
1 回答
367 浏览

python - Starlette - uvicorn - 石墨烯异常记录

我在 uvicorn 上的 starlette 中使用石墨烯应用程序。

我想查看带有 traceroute 的异常日志。

但目前它隐藏了异常,我只看到带有“错误请求”消息的访问日志。

我已将我知道的所有记录器重定向到根记录器,但访问日志除外。

根记录器已根据我的需要正确地记录消息,但似乎应用程序处理程序中的异常被捕获并且没有传播到根记录器。

我也设置了sys.excepthook

我为线程设置了异常钩子。通常,查看所有日志消息就足够了。

我使用下一个 json 配置文件:

我怀疑日志配置文件有问题。

0 投票
1 回答
336 浏览

python - starlette CORS 排除端点

我正在使用具有以下配置的 Fastapi (CORSMiddleware)

无论如何要排除某些端点或向端点添加信号以通过 CORS 检查并允许不是来自的请求frontend.domain.com

谢谢你。

0 投票
1 回答
1117 浏览

python - FastAPI 依赖项(yield):如何手动调用它们?

FastAPI 使用 Depends() 来注入返回或产生的变量。例如,FastAPI/SQL

如果我想在get_db()其他地方(FastAPI 路由之外)使用它,我该怎么做?我知道这是 Python 的核心知识,但我似乎无法弄清楚。我最初的想法是db = yield from get_db(),但我不能调用yield from异步函数(并且不知道它是否还能工作)。然后我尝试了:

由于原件get_db()未包装为@contextmanager. (注意,我不想装饰它——我以我get_db为例,我需要处理更复杂的依赖项)。最后,我尝试db = next(get_db())了 - 可行,但我认为这不是正确的解决方案。何时/如何finally调用 - 当我的方法返回时?在其他一些依赖项中,有需要执行的后生成代码;我需要next()再次调用以确保代码执行吗?似乎next()不是正确的方法。有任何想法吗?

0 投票
2 回答
490 浏览

fastapi - 如何在 FastAPI 中验证静态路由

我按照文档通过 FastAPI 静态提供文件夹:

如何向此路由添加基本身份验证(用户、密码)/static

0 投票
0 回答
350 浏览

python - 配置 Fastapi 路由器

我已经在带有中间件的 coupe 中声明了路由器,并为在对某些抽象端点的寻址调用中可能发生的任何异常添加了通用处理程序:

ClientIPMiddleware课堂上,我必须重构并添加如下内容:

我在这里只需要两种机制:一种是用于在端点级别捕获所有可能的错误,另一种是用于获取序列化响应或带有JSONResponse消息。在代码块的最后一个片段中很奇怪,因为它在那里无法捕获任何错误。有没有更好的解决方案来达到目标​​?向实例添加自定义或原始装饰器?status_codestatustry/exceptapp