BrowserUse_and_ComputerUse_.../api/main.py

48 lines
1.3 KiB
Python

from contextlib import asynccontextmanager
import aiohttp
from fastapi import FastAPI
from api.clients.browser_rpc_client import BrowserRpcClient
from api.core.settings import settings
from api.repositories.task_store import TaskStore
from api.routes.runs import router as runs_router
from api.routes.tasks import router as tasks_router
from api.services.task_service import TaskService
@asynccontextmanager
async def lifespan(app: FastAPI):
session = aiohttp.ClientSession()
task_service = TaskService(
store=TaskStore(),
rpc_client=BrowserRpcClient(settings.browser_rpc_url, session=session),
max_concurrency=settings.max_concurrency,
rpc_timeout_cap=settings.browser_rpc_timeout,
)
app.state.task_service = task_service
try:
yield
finally:
await task_service.close()
await session.close()
def create_app() -> FastAPI:
app = FastAPI(
title="Browser API",
version="1.0.0",
description="REST API for submitting tasks to browser-use and retrieving their status/results.",
lifespan=lifespan,
)
app.include_router(tasks_router)
app.include_router(runs_router)
@app.get("/health")
async def health() -> dict:
return {"ok": True}
return app
app = create_app()