Mentions légales du service

Skip to content
Snippets Groups Projects
Commit 8cadaa47 authored by Damien Saucez's avatar Damien Saucez
Browse files

initial phase

parent a285c57d
No related branches found
No related tags found
No related merge requests found
Showing
with 129 additions and 0 deletions
docker run -d --name redis-broker -p 6379:6379 redis:latest
pip install -r requirements.txt
python3 -m taskiq worker backend.worker:broker --reload
python3 -m taskiq scheduler backend.worker:scheduler
python3 -m uvicorn backend.app:app --host 0.0.0.0 --port 8000 --reload
\ No newline at end of file
File added
File added
File added
File added
File added
File added
File added
File added
"""Backend API."""
from fastapi import APIRouter, Depends
from backend.api.api_v1 import deps
from backend.api.api_v1.endpoints import cluster
api_router = APIRouter()
api_router.include_router(cluster.cluster_router, prefix="/cluster", tags=["cluster"])
from backend.core.database import async_session
from backend.exceptions import *
async def get_db():
"""Get an open DB session."""
async with async_session() as session, session.begin():
yield session
\ No newline at end of file
File added
File added
from backend.api.api_v1 import deps
import backend.models as models
import backend.schemas as schemas
from backend.tasks import add
from backend.schemas.task import TaskStatus
from backend.core.database import async_session
from fastapi import APIRouter, Body, Depends, HTTPException, Query, Request
from starlette import status
from typing import Annotated
import sqlalchemy as sa
from sqlalchemy.ext.asyncio import AsyncSession
cluster_router = APIRouter()
async def _get_resource(
resource_id: str,
db: Annotated[AsyncSession, Depends(deps.get_db)]
) -> models.Cluster:
result = await db.execute(
sa.select(models.Cluster).where(
models.Cluster.id == resource_id
),
)
try:
return result.scalar_one()
except sa.exc.NoResultFound:
raise HTTPException(
status_code=404,
detail=f"No known resource with id '{resource_id}'",
) from None
async def insert_cluster(session: AsyncSession, name: str, taskid: str, status: str) -> models.Cluster:
new_cluster = models.Cluster(name=name, task_id=taskid)
session.add(new_cluster)
await session.commit()
return new_cluster
@cluster_router.post(
"/",
response_model=TaskStatus,
status_code=status.HTTP_202_ACCEPTED,
operation_id="create_cluster",
)
async def _post_resource_id(cluster_info: schemas.ClusterSchema):
print (cluster_info)
create_cluster_task = await add.kiq(1,2)
taskid = create_cluster_task.task_id
cluster = await insert_cluster(async_session(), name="coucou", taskid=taskid, status="submitted")
print (f"{cluster.id} --> {cluster.task_id}")
return TaskStatus(id=cluster.id, status=cluster.status)
@cluster_router.get(
"/{resource_id}/",
response_model=TaskStatus,
status_code=status.HTTP_200_OK,
operation_id="get_cluster",
)
async def _get_resource_id(resource: Annotated[models.Cluster, Depends(_get_resource)],
):
return TaskStatus(id=resource.id, status=resource.status)
\ No newline at end of file
"""VRS application."""
from fastapi import FastAPI
from contextlib import asynccontextmanager
import backend.models
from backend.core.database import create_tables, async_session
from backend.core.database import create_tables
from backend.api.api_v1.api import api_router
from backend.exception import register_exception_handlers
async def shutdown():
print("bye")
@asynccontextmanager
async def database_lifespan(app: FastAPI):
print ("create_tables")
await create_tables()
yield
# await close_database()
@asynccontextmanager
async def lifespan(app: FastAPI):
async with (
database_lifespan(app),
):
yield
await shutdown()
api_url = "/api_v1"
app = FastAPI(title="title",
description="description",
openapi_url=f"{api_url}/openapi.json",
lifespan=lifespan)
app.include_router(api_router, prefix=api_url)
register_exception_handlers(app)
\ No newline at end of file
from .config import settings
__all__ = ['settings']
\ No newline at end of file
File added
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment