Backend toolkit: async web, PostgreSQL, S3, logging, and component lifecycle management
Project description
adc-stack
Набор async-библиотек для построения backend-сервисов на Python. Объединяет инструменты для работы с web, PostgreSQL, S3, логированием и управлением жизненным циклом компонентов приложения.
Что входит в стек
| Библиотека | Назначение | Описание |
|---|---|---|
| adc-appkit | Ядро приложения | Компонентная архитектура, DI, управление жизненным циклом, request scope |
| adc-webkit | Web-фреймворк | HTTP-эндпоинты на базе Starlette, JWT-аутентификация, OpenAPI/Swagger |
| adc-aiopg | PostgreSQL | Async-клиент на asyncpg, query builder, DAO/Repository pattern, Alembic-миграции |
| adc-aios3 | S3/MinIO | Async-клиент для S3-совместимого хранилища (upload, download, streaming, presigned URL) |
| adc-logger | Логирование | Конфигурация stdlib logging: JSON, цветной вывод, композируемые настройки |
Установка
pip install git+https://github.com/ascet-dev/adc-stack.git@main
Или отдельные библиотеки:
pip install git+https://github.com/ascet-dev/adc-appkit.git@main
pip install git+https://github.com/ascet-dev/adc-webkit.git@main
pip install git+https://github.com/ascet-dev/adc-aiopg.git@main
pip install git+https://github.com/ascet-dev/adc-aios3.git@main
pip install git+https://github.com/ascet-dev/adc-logger.git@main
Быстрый старт
Пример приложения, использующего все компоненты стека:
import asyncio
from adc_appkit import BaseApp, component, ComponentStrategy
from adc_appkit.components.pg import PG
from adc_appkit.components.s3 import S3
from adc_webkit.web import Web, Route
from adc_webkit.web.endpoints import JsonEndpoint, Ctx, Response
from adc_logger import BaseLoggingConfig
from pydantic import BaseModel
# 1. Настраиваем логирование
config = BaseLoggingConfig()
config.setup_logging()
# 2. Описываем приложение с компонентами
class App(BaseApp):
db = component(PG, config_key="pg")
s3 = component(S3, config_key="s3")
# 3. Описываем эндпоинты
class HealthQuery(BaseModel):
pass
class HealthEndpoint(JsonEndpoint):
response = Response(status_code=200)
async def execute(self, ctx: Ctx) -> dict:
return {"status": "ok"}
# 4. Собираем web-приложение
class API(Web):
routes = [
Route(method="GET", path="/health", view=HealthEndpoint),
]
# 5. Запускаем
async def main():
app = App(components_config={
"pg": {"dsn": "postgresql://user:pass@localhost/db"},
"s3": {
"bucket": "my-bucket",
"url": "http://localhost:9000",
"access_key": "minioadmin",
"secret_key": "minioadmin",
},
})
await app.start()
api = API.create()
api.bind_component("db", app.db)
await api.start("0.0.0.0", 8000)
asyncio.run(main())
Архитектура
adc-stack
├── adc-appkit # Ядро: компоненты, DI, lifecycle
│ ├── PG # Встроенный компонент для PostgreSQL
│ ├── S3 # Встроенный компонент для S3
│ └── HTTP # Встроенный компонент для HTTP-клиента
├── adc-webkit # Web: эндпоинты, роутинг, auth, OpenAPI
├── adc-aiopg # PostgreSQL: пул, запросы, DAO, миграции
├── adc-aios3 # S3: upload/download, streaming, presigned URL
└── adc-logger # Logging: JSON/color форматтеры, конфигурация
adc-appkit выступает центральным элементом: он управляет жизненным циклом всех компонентов (БД, S3, HTTP-клиенты) и предоставляет DI для связывания их с бизнес-логикой. adc-webkit отвечает за HTTP-слой. Остальные библиотеки можно использовать как вместе, так и по отдельности.
Требования
- Python >= 3.11
- PostgreSQL (для adc-aiopg)
- S3-совместимое хранилище (для adc-aios3) -- AWS S3, MinIO и др.
Лицензия
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file adc_stack-0.1.2.tar.gz.
File metadata
- Download URL: adc_stack-0.1.2.tar.gz
- Upload date:
- Size: 101.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7a1ff491efa1ac26a5de7a1c45a71dbdf7daab65f19a247d9a7005b15a64e26b
|
|
| MD5 |
14ddc09dbf8d326d0e6bd6aa83be481f
|
|
| BLAKE2b-256 |
c8030eb0122db402277255d05a92484fed023b573d22cc0f302afec700a18a4f
|
File details
Details for the file adc_stack-0.1.2-py3-none-any.whl.
File metadata
- Download URL: adc_stack-0.1.2-py3-none-any.whl
- Upload date:
- Size: 5.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8dcf458304763f2afb15fef33bf20515c52db240d68f9e851452b8f52e1c7ad7
|
|
| MD5 |
5ff5bf44124e62e006ff39b800509675
|
|
| BLAKE2b-256 |
dc5873f1b1550e0eb7344977aebcaad1ba0debff3e88747f23ed04785b2674d0
|