From b39890c6d20cdf7a6975da3b878d621380ebb73a Mon Sep 17 00:00:00 2001 From: K0l0b04ek Date: Sun, 27 Sep 2026 23:48:26 +0300 Subject: [PATCH 1/3] Implement ASGI application with fibonacci, factorial, and mean endpoints --- hw1/app.py | 152 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 151 insertions(+), 1 deletion(-) diff --git a/hw1/app.py b/hw1/app.py index 6107b87..225e694 100644 --- a/hw1/app.py +++ b/hw1/app.py @@ -1,6 +1,128 @@ +import json +from urllib.parse import parse_qs from typing import Any, Awaitable, Callable +BAD_REQUEST = None, 400 +UNPROCESSABLE_ENTITY = None, 422 +SUCCEFULL = lambda result: ({"result": result}, 200) + + +async def check_integer(n_str): + try: + n = int(n_str) + except (ValueError, TypeError): + return None + return n + + +async def fibonacci(request): + n = await check_integer(request['path_params']['n']) + if n is None: + return UNPROCESSABLE_ENTITY + if n < 0: + return BAD_REQUEST + def fib(n): + if n <= 1: + return n + a, b = 0, 1 + for _ in range(2, n + 1): + a, b = b, a + b + return b + result = fib(n) + return SUCCEFULL(result) + + +async def factorial(request): + query_params = request['query_params'] + if 'n' not in query_params: + return UNPROCESSABLE_ENTITY + n = await check_integer(query_params['n']) + if n is None: + return UNPROCESSABLE_ENTITY + if n < 0: + return BAD_REQUEST + result = 1 + for i in range(1, n + 1): + result *= i + return SUCCEFULL(result) + + +async def mean(request): + body = request.get('body') + if body is None or body == '': + return UNPROCESSABLE_ENTITY + try: + data = json.loads(body) + except (json.JSONDecodeError, TypeError): + return UNPROCESSABLE_ENTITY + if not isinstance(data, list): + return UNPROCESSABLE_ENTITY + if len(data) == 0: + return BAD_REQUEST + try: + numbers = [float(x) for x in data] + except (TypeError, ValueError): + return UNPROCESSABLE_ENTITY + result = sum(numbers) / len(numbers) + return SUCCEFULL(result) + + +async def send_json_response(send, status_code, data): + json_bytes = json.dumps(data, ensure_ascii=False).encode('utf-8') + await send({ + 'type': 'http.response.start', + 'status': status_code, + 'headers': [ + [b'content-type', b'application/json; charset=utf-8'], + [b'content-length', str(len(json_bytes)).encode('ascii')], + ], + }) + await send({ + 'type': 'http.response.body', + 'body': json_bytes, + }) + + +def parse_path(path): + path = path.rstrip('/') + parts = path.split('/') + if len(parts) == 3 and parts[1] == 'fibonacci': + return 'fibonacci', {'n': parts[2]} + if len(parts) == 2 and parts[1] == 'factorial': + return 'factorial', {} + if len(parts) == 2 and parts[1] == 'mean': + return 'mean', {} + return None, {} + + +async def read_body(receive): + body = b'' + while True: + message = await receive() + body += message.get('body', b'') + if not message.get('more_body', False): + break + return body + + +async def handle_lifespan(receive, send): + while True: + message = await receive() + if message['type'] == 'lifespan.startup': + await send({'type': 'lifespan.startup.complete'}) + elif message['type'] == 'lifespan.shutdown': + await send({'type': 'lifespan.shutdown.complete'}) + return + + +HANDLERS = { + 'fibonacci': fibonacci, + 'factorial': factorial, + 'mean': mean, +} + + async def application( scope: dict[str, Any], receive: Callable[[], Awaitable[dict[str, Any]]], @@ -12,7 +134,35 @@ async def application( receive: Корутина для получения сообщений от клиента send: Корутина для отправки сообщений клиенту """ - # TODO: Ваша реализация здесь + if scope["type"] == "lifespan": + await handle_lifespan(receive, send) + return + if scope["type"] != "http": + return + path = scope['path'] + method = scope['method'] + query_string = scope['query_string'] + query_params = {k: v[0] for k, v in parse_qs(query_string.decode('utf-8')).items()} + body_bytes = await read_body(receive) + body = body_bytes.decode('utf-8') if len(body_bytes) > 0 else None + endpoint, path_params = parse_path(path) + if endpoint is None: + await send_json_response(send, 404, {'error': 'Not Found'}) + return + request = { + 'path': path, + 'method': method, + 'query_params': query_params, + 'path_params': path_params, + 'body': body, + } + handler = HANDLERS[endpoint] + result, status_code = await handler(request) + if result is None: + await send_json_response(send, status_code, {'error': 'Invalid request'}) + else: + await send_json_response(send, status_code, result) + if __name__ == "__main__": import uvicorn From 172918aa60e02e4e3b4924682ec257be89ee1443 Mon Sep 17 00:00:00 2001 From: Maraev Konstantin Date: Sun, 4 Oct 2026 22:09:28 +0300 Subject: [PATCH 2/3] Realized HW2 without additional task --- hw2/hw/shop_api/main.py | 200 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 199 insertions(+), 1 deletion(-) diff --git a/hw2/hw/shop_api/main.py b/hw2/hw/shop_api/main.py index f60a8c6..33c0fdc 100644 --- a/hw2/hw/shop_api/main.py +++ b/hw2/hw/shop_api/main.py @@ -1,3 +1,201 @@ -from fastapi import FastAPI +from fastapi import FastAPI, HTTPException, Query, Response +from pydantic import BaseModel, ConfigDict +from typing import Optional, List + app = FastAPI(title="Shop API") + +class ItemBase(BaseModel): + name: str + price: float + +class ItemCreate(ItemBase): + pass + +class ItemUpdate(BaseModel): + model_config = ConfigDict(extra='forbid') + + name: Optional[str] = None + price: Optional[float] = None + deleted: Optional[bool] = None + +class Item(ItemBase): + id: int + deleted: bool = False + +class CartItem(BaseModel): + id: int + name: str + quantity: int + available: bool + +class Cart(BaseModel): + id: int + items: List[CartItem] + price: float + +class CartIdResponse(BaseModel): + id: int + +items_db: dict[int, Item] = {} +carts_db: dict[int, Cart] = {} + +item_id_cnt = 0 +cart_id_cnt = 0 + +ITEM_NOT_FOUND = "Item not found" +CART_NOT_FOUND = "Cart not found" + + +def calculate_cart(cart: Cart) -> Cart: + total_price = 0.0 + updated_items = [] + for cart_item in cart.items: + db_item = items_db.get(cart_item.id) + if db_item: + is_available = not db_item.deleted + total_price += db_item.price * cart_item.quantity + updated_items.append(CartItem( + id=cart_item.id, + name=db_item.name, + quantity=cart_item.quantity, + available=is_available + )) + return Cart( + id=cart.id, + items=updated_items, + price=total_price + ) + + +@app.post("/item", response_model=Item, status_code=201) +def create_item(item: ItemCreate): + global item_id_cnt + new_item = Item(id=item_id_cnt, name=item.name, price=item.price, deleted=False) + items_db[item_id_cnt] = new_item + item_id_cnt += 1 + return new_item + + +@app.get("/item/{item_id}", response_model=Item) +def get_item(item_id: int): + if item_id not in items_db or items_db[item_id].deleted: + raise HTTPException(status_code=404, detail=ITEM_NOT_FOUND) + return items_db[item_id] + + +@app.get("/item", response_model=List[Item]) +def list_items( + offset: int = Query(0, ge=0), + limit: int = Query(10, gt=0), + min_price: Optional[float] = Query(None, ge=0), + max_price: Optional[float] = Query(None, ge=0), + show_deleted: bool = False +): + result = [] + for item in items_db.values(): + if not show_deleted and item.deleted: + continue + if min_price is not None and item.price < min_price: + continue + if max_price is not None and item.price > max_price: + continue + result.append(item) + result.sort(key=lambda x: x.id) + return result[offset:offset + limit] + + +@app.put("/item/{item_id}", response_model=Item) +def update_item(item_id: int, item: ItemCreate): + if item_id not in items_db: + raise HTTPException(status_code=404, detail=ITEM_NOT_FOUND) + items_db[item_id].name = item.name + items_db[item_id].price = item.price + items_db[item_id].deleted = False + return items_db[item_id] + + +@app.patch("/item/{item_id}", response_model=Item) +def patch_item(item_id: int, item: ItemUpdate): + if item_id not in items_db or items_db[item_id].deleted: + raise HTTPException(status_code=304, detail="Not modified") + if item.deleted is not None: + raise HTTPException(status_code=422, detail="Cannot update 'deleted' field via PATCH") + if item.name is not None: + items_db[item_id].name = item.name + if item.price is not None: + items_db[item_id].price = item.price + return items_db[item_id] + + +@app.delete("/item/{item_id}", response_model=Item) +def delete_item(item_id: int): + if item_id not in items_db: + raise HTTPException(status_code=404, detail=ITEM_NOT_FOUND) + items_db[item_id].deleted = True + return items_db[item_id] + + +@app.post("/cart", response_model=CartIdResponse, status_code=201) +def create_cart(response: Response): + global cart_id_cnt + new_id = cart_id_cnt + carts_db[new_id] = Cart(id=new_id, items=[], price=0.0) + cart_id_cnt += 1 + response.headers["Location"] = f"/cart/{new_id}" + return {"id": new_id} + + +@app.get("/cart/{cart_id}", response_model=Cart) +def get_cart(cart_id: int): + if cart_id not in carts_db: + raise HTTPException(status_code=404, detail=CART_NOT_FOUND) + return calculate_cart(carts_db[cart_id]) + + +@app.get("/cart", response_model=List[Cart]) +def list_carts( + offset: int = Query(0, ge=0), + limit: int = Query(10, gt=0), + min_price: Optional[float] = Query(None, ge=0), + max_price: Optional[float] = Query(None, ge=0), + min_quantity: Optional[int] = Query(None, ge=0), + max_quantity: Optional[int] = Query(None, ge=0) +): + result = [] + for cart in carts_db.values(): + calc_cart = calculate_cart(cart) + if min_price is not None and calc_cart.price < min_price: + continue + if max_price is not None and calc_cart.price > max_price: + continue + total_qty = sum(ci.quantity for ci in calc_cart.items) + if min_quantity is not None and total_qty < min_quantity: + continue + if max_quantity is not None and total_qty > max_quantity: + continue + result.append(calc_cart) + result.sort(key=lambda x: x.id) + return result[offset:offset + limit] + + +@app.post("/cart/{cart_id}/add/{item_id}", response_model=Cart) +def add_to_cart(cart_id: int, item_id: int): + if cart_id not in carts_db: + raise HTTPException(status_code=404, detail=CART_NOT_FOUND) + if item_id not in items_db: + raise HTTPException(status_code=404, detail=ITEM_NOT_FOUND) + cart = carts_db[cart_id] + db_item = items_db[item_id] + for cart_item in cart.items: + if cart_item.id == item_id: + cart_item.quantity += 1 + return calculate_cart(cart) + new_cart_item = CartItem( + id=db_item.id, + name=db_item.name, + quantity=1, + available=not db_item.deleted + ) + cart.items.append(new_cart_item) + return calculate_cart(cart) From 9dc8337ba9f81dcbf9d001f7925c5e1d8db6394f Mon Sep 17 00:00:00 2001 From: Maraev Konstantin Date: Fri, 9 Oct 2026 23:17:23 +0300 Subject: [PATCH 3/3] hw3 "deployed and dashboarded" --- hw2/hw/Dockerfile | 23 ++++++++++++++++ hw2/hw/docker-compose.yml | 31 ++++++++++++++++++++++ hw2/hw/requirements.txt | 2 ++ hw2/hw/screenshot/grafana_dashboards.jpg | Bin 0 -> 66363 bytes hw2/hw/settings/prometheus/prometheus.yml | 10 +++++++ hw2/hw/shop_api/main.py | 2 ++ 6 files changed, 68 insertions(+) create mode 100644 hw2/hw/Dockerfile create mode 100644 hw2/hw/docker-compose.yml create mode 100644 hw2/hw/screenshot/grafana_dashboards.jpg create mode 100644 hw2/hw/settings/prometheus/prometheus.yml diff --git a/hw2/hw/Dockerfile b/hw2/hw/Dockerfile new file mode 100644 index 0000000..08ae370 --- /dev/null +++ b/hw2/hw/Dockerfile @@ -0,0 +1,23 @@ +FROM python:3.12 AS base + +ARG PYTHONFAULTHANDLER=1 \ + PYTHONUNBUFFERED=1 \ + PYTHONHASHSEED=random \ + PIP_NO_CACHE_DIR=on \ + PIP_DISABLE_PIP_VERSION_CHECK=on \ + PIP_DEFAULT_TIMEOUT=500 + +RUN apt-get update && apt-get install -y gcc +RUN python -m pip install --upgrade pip + +WORKDIR $APP_ROOT/src +COPY . ./ + +ENV VIRTUAL_ENV=$APP_ROOT/src/.venv \ + PATH=$APP_ROOT/src/.venv/bin:$PATH + +RUN pip install -r requirements.txt + +FROM base AS local + +CMD ["uvicorn", "shop_api.main:app", "--port", "8080", "--host", "0.0.0.0"] diff --git a/hw2/hw/docker-compose.yml b/hw2/hw/docker-compose.yml new file mode 100644 index 0000000..91b5555 --- /dev/null +++ b/hw2/hw/docker-compose.yml @@ -0,0 +1,31 @@ +version: "3" + +services: + + local: + build: + context: . + dockerfile: ./Dockerfile + target: local + restart: always + ports: + - 8080:8080 + + grafana: + image: grafana/grafana:latest + ports: + - 3000:3000 + restart: always + + prometheus: + image: prom/prometheus + volumes: + - ./settings/prometheus/:/etc/prometheus/ + command: + - "--config.file=/etc/prometheus/prometheus.yml" + - "--storage.tsdb.path=/prometheus" + - "--web.console.libraries=/usr/share/prometheus/console_libraries" + - "--web.console.templates=/usr/share/prometheus/consoles" + ports: + - 9090:9090 + restart: always diff --git a/hw2/hw/requirements.txt b/hw2/hw/requirements.txt index 207dcf5..af0702d 100644 --- a/hw2/hw/requirements.txt +++ b/hw2/hw/requirements.txt @@ -7,3 +7,5 @@ pytest>=7.4.0 pytest-asyncio>=0.21.0 httpx>=0.27.2 Faker>=37.8.0 + +prometheus-fastapi-instrumentator \ No newline at end of file diff --git a/hw2/hw/screenshot/grafana_dashboards.jpg b/hw2/hw/screenshot/grafana_dashboards.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7908b8ec8615bc2e10fe71321702409dc6c35f58 GIT binary patch literal 66363 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�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