gpt4 book ai didi

python - 如何使用 FastAPI + uvicorn 在工作人员之间共享数据库连接?

转载 作者:行者123 更新时间:2023-12-03 14:42:03 35 4
gpt4 key购买 nike

我正在尝试使用 FastAPI + uvicorn 创建一个应用程序。
此应用程序必须能够处理同时连接。我不能保证所有代码都可以以异步/等待方式执行。
然后,我想使用 --workers X来自 uvicorn 的选项来处理同时连接,但我需要在所有工作人员之间共享相同的数据库连接。
我尝试了以下示例:

import time
from pymongo.database import Database
from fastapi import Depends, FastAPI
from dynaconf import settings
from pymongo import MongoClient

print("-------> Creating a new MongoDB connection")
db_conn = MongoClient(settings.MONGODB_URI)
db = db_conn.get_database('mydb')

app = FastAPI()

def get_db():
return db

@app.get("/{id}")
async def main(id: str, db: Database = Depends(get_db)):
print("Recebido id: " + id)
time.sleep(10)
return { 'id': id }
$uvicorn main:app --workers 2
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO: Started parent process [24730]
-------> Creating a new MongoDB connection
-------> Creating a new MongoDB connection
INFO: Started server process [24733]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Started server process [24732]
INFO: Waiting for application startup.
INFO: Application startup complete.
但是我得到了两个 mongodb 连接。
如何共享 MongoDB 连接并避免为每个工作人员创建连接?

最佳答案

您不得共享连接,因为它是有状态的。两个或多个进程无法成功使用单个套接字连接。

关于python - 如何使用 FastAPI + uvicorn 在工作人员之间共享数据库连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63316419/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com