问题标签 [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 回答
309 浏览

python - FastAPI & GINO 无法从数据库中的表中获取所有行

我陷入了 GINO 的问题。我可以从称为模板的表中获取一行,因此在另一条路线中,我想从表中获取所有行。在这里,您可以看到我从 db ant 获取一条记录的观点,它运行良好。

接下来,您可以查看我的视图以将记录添加到数据库,它也可以正常工作:

所以,这个观点的主要原因,它不起作用:

在下面查看我的模板模型:

最后是我的 db GINO 引擎:

错误日志:

请告诉我出了什么问题,我花了很多时间来解决这个问题。欢迎回答,谢谢。

0 投票
1 回答
5405 浏览

python - 在后台任务中使用多个工作人员 - Fast-API

我正在尝试处理用户上传的文件。但是,我希望用户在上传完成后得到响应并终止连接但继续处理文件。因此,我使用的是 BackgroundTasks.add_tasks,我的代码如下所示:

不幸的是,上面的代码只能一个接一个地执行。此外,我必须等到所有结果都处理完毕,然后在foo中打印语句才起作用,即假设我在 csv 中有 n 行,在处理完所有 n 之后,当我看到所有的打印语句时。我的程序在 20 个工作人员上运行,但是当这个进程运行时,它只使用了大约 1% 的 CPU(foo 不是计算任务,它更像是一个 IO/网络绑定任务)。这让我认为后台进程仅在 1 个工作人员上运行。我确实尝试了 ProcessPoolExecutor 如下:

但是,我收到以下错误:

processpoolexecutor 无法腌制本地对象

我确实设法通过改变我的方法来克服这个错误:

至:

但是,然后我收到此错误:

文件“uvloop/loop.pyx”,第 2658 行,在 uvloop.loop.Loop.run_in_executor AttributeError: 'Loop' object has no attribute 'submit'

总结:要处理一行,我可以点击“/foo”端点。现在,我想处理 200 行的 csv。所以首先我接受来自用户的文件并返回成功消息并终止该连接。然后将 csv 添加到后台任务,该任务应将每一行映射到“/foo”端点并为我提供每一行的结果。但是,到目前为止我尝试过的所有方法似乎都只使用一个线程,并且正在逐行处理每一行。我想要一种可以同时处理多行的方法,就像我们可以使用 Apache JMeter 之类的工具一样同时多次点击“/foo”端点。

0 投票
2 回答
13453 浏览

python - 如何从fastapi中的另一个api调用一个api?

我能够从另一个 API 获得响应,但无法将其存储在某处(在返回响应之前的文件或其他内容中) response=RedirectResponse(url="/apiname/")(我想访问带有标题和正文的发布请求)

我想存储此响应内容而不返回它。

是的,如果我返回函数,我会得到结果,但是当我打印它时,我找不到结果。另外,如果我给出发布请求,那么我会收到错误实体未找到。

我阅读了 starlette 和 fastapi 文档,但找不到解决方法。回调也没有帮助。

0 投票
1 回答
253 浏览

python - Pytorch 在 WEB_CONCURRENCY > 1 的 Starlette 中使用时非常慢并且使用大量 GPU 内存

我正在尝试构建一个使用 Pytorch 模型的 API。但是,一旦我增加到WEB_CONCURRENCY1 以上,它会创建比预期更多的线程,并且速度会大大降低,即使发送单个请求也是如此。

示例代码:

api.sh

api.py

WEB_CONCURRENCY=1api.sh 中,nvidia-smi运行时只看到 1 个 python 进程,模型使用 1.2GB 或 VRAM。请求大约需要 0.7 秒

WEB_CONCURRENCY=2api.sh 中,可以看到超过 8 个 python 进程nvidia-smi,它们将使用超过 ~8GB 的​​ VRAM。如果幸运并且没有出现内存不足错误,那么单个请求最多可能需要 3 秒。

我正在使用 Python3.8

为什么 Pytorch 不使用预期的 2.4GB VRAM 时WEB_CONCURRENCY=2?为什么它会减速这么多?

0 投票
1 回答
1115 浏览

api - 有没有办法在后端服务器启动时直接在 fastapi 中调用 api?

所以我有一个 API 每小时更新一次数据库中的天气数据(使用 repeat_every 装饰器)。有没有办法在后端服务器启动并运行时自动调用此 API 而不是手动调用它?

0 投票
1 回答
2298 浏览

python - FastAPI 发现我的 JSON 对象数组是一个无效列表

我正在使用 FastAPI,我正在尝试将 JSON 对象的 JSON 数组发送到我的 post 端点,在正文中。我的端点定义为:

我在 Postman 中的身体看起来像:

但是,我不断收到来自 FastAPI 的 422 unprocessable entity 错误,错误详细信息:
value is not a valid list

我还使用修改后的端点对其进行了测试:

并使用简单的字符串数组,但返回相同的错误。

我是否缺少 FastAPI 对有效列表的定义?

0 投票
1 回答
2212 浏览

websocket - FastAPI websocket ping/pong 超时

我正在使用 FastAPI@app.websocket来监听传入的 websocket。FastAPI(或下面的 Starlette 或 Uvicorn)如何进行 ping/pong 心跳?这是可配置的吗?我根本无法在文档中找到它。

fastapi使用starlette,并且在引擎盖下似乎使用websockets. websockets.connect默认情况下使用 20 秒的ping_intervalping_timeout,但我不知道这是否在 FastAPI 中使用。

0 投票
2 回答
2417 浏览

python - FastAPI:如何通过 API 下载字节

有没有办法通过 FastAPI 下载文件?我们想要的文件位于 Azure Datalake 中,从湖中检索它们不是问题,当我们尝试从数据湖获取字节到本地计算机时会出现问题。

我们曾尝试在 FastAPI 中使用不同的模块,但starlette.responses.FileResponse没有成功fastapi.Response

在 Flask 中,这不是问题,可以通过以下方式完成:

使用有效文件名运行此文件时,文件会自动下载。FastAPI 中是否有与此等效的方法?

解决了

经过更多的故障排除后,我找到了一种方法来做到这一点。

因此,经过大量故障排除和数小时查看文档后,这就是全部,只需将字节返回为Response(the_file).

0 投票
1 回答
2475 浏览

python - 快速 api,在 web 套接字中发送 json 响应

我有一个用快速 api 构建的小型 WebSocket。我正在尝试从客户端接收消息,对其进行处理并返回 JSON 响应。

来自客户端的消息按应有的方式接收和处理,但我似乎无法将响应字典加载到 JSON 并将其发回。

我收到一个错误:

0 投票
1 回答
631 浏览

python - starlette,在 Web 套接字中使用同步函数

我正在尝试使用 starlette 构建一个 Web 套接字,它接收消息,在同步函数中运行计算并返回响应。

情绪分析是一个同步功能。

因此接收到文本并运行计算,如果我打印数据变量(字典),我看到它已正确返回,但是当我尝试将其发送回客户端时,出现以下错误: