diff --git a/main.py b/main.py index 6559f13..e932fcd 100644 --- a/main.py +++ b/main.py @@ -21,15 +21,12 @@ Site, \ Email from settings import SECRET_KEY +from services.network_load import interest_calculation app = FastAPI() -origins = [ - 'http://sbmpei.ru', - 'https://sbmpei.ru', - 'http://localhost', - 'http://localhost:8095', -] +origins = ['*'] + app.add_middleware( CORSMiddleware, @@ -49,9 +46,8 @@ async def redirect_page_docs(): @app.post('/traffic/', response_model=Traffic) -async def calculate( - identification: str, - session: AsyncSession = Depends(get_session)): +async def calculate(identification: str, + session: AsyncSession = Depends(get_session)): site = (await session.execute(select(Site).where(Site.identification == identification))).first() if site is None: raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail='Запрашиваемый ключ доступа не найден') @@ -63,14 +59,15 @@ async def calculate( where(Traffic.id == traffic[0].id). values(id=traffic[0].id, counter=Traffic.counter+1, - average_load=Traffic.counter * 0.0125, - maximum_load=Traffic.counter * 0.0195, )) await session.commit() return traffic[0] traffic_id = (await session.execute(insert(Traffic).values(counter=1, create_at=date.today(), - site_id=site[0].id))).inserted_primary_key[0] + site_id=site[0].id, + average_load=interest_calculation()['average_load'], + maximum_load=interest_calculation()['maximum_load'], + ))).inserted_primary_key[0] await session.commit() return (await session.execute(select(Traffic).where(Traffic.id == traffic_id))).first()[0] diff --git a/services/network_load.py b/services/network_load.py new file mode 100644 index 0000000..a3faf2c --- /dev/null +++ b/services/network_load.py @@ -0,0 +1,19 @@ +"""Расчет нагрузки сети.""" +from datetime import datetime +from random import uniform + + +def interest_calculation() -> dict: + """Генерация процента нагруженности сети.""" + + week_day = datetime.today().weekday() + if (week_day >= 0) and (week_day <= 4): + return { + 'average_load': 45 + uniform(5, 10), + 'maximum_load': 45 + uniform(10, 20) + } + else: + return { + 'average_load': 42 + uniform(0, 5), + 'maximum_load': 42 + uniform(5, 10) + }