小编Alp*_*urk的帖子

如何在 NGINX 代理后面访问 FastAPI SwaggerUI 文档?

希望您能帮助我,这是我遇到的问题:

我的前端和后端服务器都在同一个 AWS EC2 实例上运行。因此,我创建了一个如下的 NGINX 配置:

server {
        server_name NAME;
        listen 80 default_server;
        location / {
                proxy_pass http://127.0.0.1:5000;
                proxy_set_header Host $http_host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_http_version 1.1;
        }
        location /api/ {
                proxy_pass http://127.0.0.1:8000;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $http_host;
                proxy_http_version 1.1;
        }
}
Run Code Online (Sandbox Code Playgroud)

因此,对“http://public_ip/api/”的任何请求都会路由到 FastAPI 后端服务器,而对另一个端点的所有其他请求都会路由到前端 SPA。

这在大多数情况下效果很好。但是,如果我尝试访问 FastAPI “/api/docs”“/api/redoc”路由,则会出现问题。例如,当我调用“/api/docs”端点时,有一个对“http://public_ip/openapi.json”地址的请求。显然这不是以“/api”开头的端点。因此 NGINX 会阻止它并提出错误的请求。

https://fastapi.tiangolo.com/advanced/behind-a-proxy/#about-proxies-with-a-stripped-path-prefix

我找到了本指南,但似乎这与我的问题根本无关。至少我是这么理解的。

任何帮助表示赞赏。提前致谢。

nginx swagger-ui fastapi

6
推荐指数
1
解决办法
1万
查看次数

如何并发多次运行相同的异步函数?

设置:

所以我有一个由客户端对象组成的客户端数组。还有两个异步函数,一个用于处理来自 WebSocket 的传入消息,另一个用于使用给定的客户端对象执行一些 API 调用。

当某个消息从 WebSocket 连接到达时,function_a应该检测到它并在client 数组中启动for 循环。对于客户端数组中的每个客户端对象,我想触发function_b。但function_b应该为每个客户端并发运行。

示例代码:

clients = {}

async def function_a(ws_message): # this is being called each time when a new message arrives
    if ws_message == 'signal_message':
        for client in clients:
             await function_b(client)

async def function_b(client):
    # get client parameters
    # make an API request with those parameters
Run Code Online (Sandbox Code Playgroud)

更新|| 使用asyncio.gather()编写代码 …

python concurrency python-asyncio

5
推荐指数
1
解决办法
4958
查看次数