💩(summary) init a FastAPI app
Bootsrap a generic FastAPI app to kick-start the microservice.
This commit is contained in:
committed by
aleb_the_flash
parent
0f70b544ed
commit
16bee00eb4
59
src/summary/pyproject.toml
Normal file
59
src/summary/pyproject.toml
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
|
||||||
|
[project]
|
||||||
|
name = "summary"
|
||||||
|
version = "0.1.0"
|
||||||
|
dependencies = [
|
||||||
|
"fastapi[standard]>=0.105.0",
|
||||||
|
"uvicorn>=0.24.0",
|
||||||
|
"pydantic>=2.5.0",
|
||||||
|
"pydantic-settings>=2.1.0",
|
||||||
|
]
|
||||||
|
|
||||||
|
[project.optional-dependencies]
|
||||||
|
dev = [
|
||||||
|
"ruff==0.7.4",
|
||||||
|
]
|
||||||
|
|
||||||
|
[build-system]
|
||||||
|
requires = ["setuptools>=61.0"]
|
||||||
|
build-backend = "setuptools.build_meta"
|
||||||
|
|
||||||
|
|
||||||
|
[tool.ruff]
|
||||||
|
target-version = "py310"
|
||||||
|
|
||||||
|
[tool.ruff.lint]
|
||||||
|
select = [
|
||||||
|
"B", # flake8-bugbear
|
||||||
|
"C4", # flake8-comprehensions
|
||||||
|
"D", # pydocstyle
|
||||||
|
"E", # pycodestyle error
|
||||||
|
"F", # Pyflakes
|
||||||
|
"I", # Isort
|
||||||
|
"ISC", # flake8-implicit-str-concat
|
||||||
|
"PLC", # Pylint Convention
|
||||||
|
"PLE", # Pylint Error
|
||||||
|
"PLR", # Pylint Refactor
|
||||||
|
"PLW", # Pylint Warning
|
||||||
|
"RUF100", # Ruff unused-noqa
|
||||||
|
"S", # flake8-bandit
|
||||||
|
"T20", # flake8-print
|
||||||
|
"W", # pycodestyle warning
|
||||||
|
]
|
||||||
|
|
||||||
|
[tool.ruff.lint.per-file-ignores]
|
||||||
|
"tests/*" = [
|
||||||
|
"S101", # use of assert
|
||||||
|
]
|
||||||
|
|
||||||
|
[tool.ruff.lint.pydocstyle]
|
||||||
|
# Use Google-style docstrings.
|
||||||
|
convention = "google"
|
||||||
|
|
||||||
|
[tool.ruff.lint.flake8-bugbear]
|
||||||
|
extend-immutable-calls = [
|
||||||
|
"fastapi.Depends",
|
||||||
|
"fastapi.params.Depends",
|
||||||
|
"fastapi.params.Query",
|
||||||
|
"fastapi.Query",
|
||||||
|
]
|
||||||
1
src/summary/summary/__init__.py
Normal file
1
src/summary/summary/__init__.py
Normal file
@@ -0,0 +1 @@
|
|||||||
|
"""Summary package."""
|
||||||
10
src/summary/summary/config.py
Normal file
10
src/summary/summary/config.py
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
"""Module for managing application configuration and settings."""
|
||||||
|
|
||||||
|
from pydantic_settings import BaseSettings, SettingsConfigDict
|
||||||
|
|
||||||
|
|
||||||
|
class Settings(BaseSettings):
|
||||||
|
"""Configuration settings loaded from environment variables and .env file."""
|
||||||
|
|
||||||
|
app_name: str = "Awesome API"
|
||||||
|
model_config = SettingsConfigDict(env_file=".env")
|
||||||
33
src/summary/summary/main.py
Normal file
33
src/summary/summary/main.py
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
"""Application entry point."""
|
||||||
|
|
||||||
|
from functools import lru_cache
|
||||||
|
from typing import Annotated
|
||||||
|
|
||||||
|
from config import Settings
|
||||||
|
from fastapi import Depends, FastAPI
|
||||||
|
|
||||||
|
app = FastAPI()
|
||||||
|
|
||||||
|
|
||||||
|
@lru_cache
|
||||||
|
def get_settings():
|
||||||
|
"""Load and cache application settings."""
|
||||||
|
return Settings()
|
||||||
|
|
||||||
|
|
||||||
|
@app.get("/")
|
||||||
|
async def root(settings: Annotated[Settings, Depends(get_settings)]):
|
||||||
|
"""Root endpoint that returns app name."""
|
||||||
|
return {"message": f"Hello World, using {settings.app_name}"}
|
||||||
|
|
||||||
|
|
||||||
|
@app.get("/__heartbeat__")
|
||||||
|
async def heartbeat():
|
||||||
|
"""Health check endpoint for monitoring."""
|
||||||
|
return {"status": "ok"}
|
||||||
|
|
||||||
|
|
||||||
|
@app.get("/__lbheartbeat__")
|
||||||
|
async def lbheartbeat():
|
||||||
|
"""Health check endpoint for load balancer."""
|
||||||
|
return {"status": "ok"}
|
||||||
Reference in New Issue
Block a user