Как инициализировать соединения с БД и управлять ими в агенте Livekit?Python

Программы на Python
Ответить
Anonymous
 Как инициализировать соединения с БД и управлять ими в агенте Livekit?

Сообщение Anonymous »

По сути, я хочу инициализировать некоторые асинхронные соединения с БД в моем агенте Livekit. Я использую Beanie для управления базой данных MongoDB. Инициализация Beanie выглядит примерно так (согласно документации):

Код: Выделить всё

from beanie import init_beanie, Document
from pymongo import AsyncMongoClient

class Sample(Document):
name: str

async def init():
# Create Async PyMongo client
client = AsyncMongoClient(
"mongodb://user:pass@host:27017"
)

# Initialize beanie with the Sample document class and a database
await init_beanie(database=client.db_name, document_models=[Sample])
Проблема, с которой я столкнулся, заключается в том, что я не могу найти, как инициализировать соединения с БД при настройке агента Livekit. Например, с помощью приложения fastapi я мог бы связать инициализацию и завершение работы БД со сроком службы FastAPI следующим образом:

Код: Выделить всё

@asynccontextmanager
async def lifespan(app: FastAPI):
# Initialize mongodb connection and collections
app.state.mongodb_manager = await init_mongodb("database_name")
# Initialize all the other dbs
app.state.redis_manager = RedisManager()
app.state.weaviate_manager = WeaviateManager()
app.state.elasticsearch_manager = ElasticSearchManager()

yield

# Close all the connections at shutdown
await app.state.mongodb_manager.close_connection()
await app.state.redis_manager.close_connection()
app.state.weaviate_manager.close_connection()
app.state.elasticsearch_manager.close_connection()

iris_app = FastAPI(lifespan=lifespan)
Сложность livekit заключается в том, что, поскольку служба агента работает в своем собственном асинхронном цикле событий, мне придется убедиться, что beanie также инициализируется в том же цикле событий. Кроме того, я не хочу выполнять инициализацию в функции точки входа, так как это будет пытаться инициализировать соединения с БД каждый раз, когда для комнаты создается новый экземпляр агента.


Подробнее здесь: https://stackoverflow.com/questions/798 ... ekit-agent
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»