app/routes.py (61 lines of code) (raw):

import logging import os import random import time from typing import Optional import httpx from fastapi import APIRouter, Response TARGET_ONE_SVC = os.environ.get("TARGET_ONE_SVC", "localhost:8000") TARGET_TWO_SVC = os.environ.get("TARGET_TWO_SVC", "localhost:8000") logger = logging.getLogger(__name__) router = APIRouter() @router.get("/") async def read_root(): logger.info("Hello World") return {"msg": "Hello World"} @router.get("/items/{item_id}") async def read_item(item_id: int, q: Optional[str] = None): logger.info("items") return {"item_id": item_id, "q": q} @router.get("/io_task") async def io_task(): time.sleep(1) logger.info("io task") return "IO bound task finish!" @router.get("/cpu_task") async def cpu_task(): for i in range(1000): _ = i * i * i logger.info("cpu task") return "CPU bound task finish!" @router.get("/random_status") async def random_status(response: Response): response.status_code = random.choice([200, 200, 300, 400, 500]) logger.info("random status") return {"path": "/random_status"} @router.get("/random_sleep") async def random_sleep(response: Response): time.sleep(random.randint(0, 5)) logger.info("random sleep") return {"path": "/random_sleep"} @router.get("/info_test") async def info_test(response: Response): logger.info("got error!!!!") raise ValueError("value error") @router.get("/chain") async def chain(response: Response): logger.info("Chain Start") async with httpx.AsyncClient() as client: await client.get( "http://localhost:8000/", ) async with httpx.AsyncClient() as client: await client.get( f"http://{TARGET_ONE_SVC}/io_task", ) async with httpx.AsyncClient() as client: await client.get( f"http://{TARGET_TWO_SVC}/cpu_task", ) logger.info("Chain Finished") return {"path": "/chain"}