Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

adc_stack-0.1.1.tar.gz (93.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

adc_stack-0.1.1-py3-none-any.whl (5.5 kB view details)

Uploaded Python 3

File details

Details for the file adc_stack-0.1.1.tar.gz.

File metadata

  • Download URL: adc_stack-0.1.1.tar.gz
  • Upload date:
  • Size: 93.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.2

File hashes

Hashes for adc_stack-0.1.1.tar.gz
Algorithm Hash digest
SHA256 a5f5d99748375574f2334ed8c4eef183e48242ebdc1bf97fa64cb185c89ff5bd
MD5 4eeee0cda3a5fa6ac7083b93ec3aada2
BLAKE2b-256 a2f881ee99ddafd91b8e6898929feea844421f4f7b897464077e0e24e60b57ce

See more details on using hashes here.

File details

Details for the file adc_stack-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: adc_stack-0.1.1-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

Hashes for adc_stack-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 790502a381a40f7d744b3d8d9c2e514e662e1a810e14ab80289e408e763ea5f7
MD5 87606b32e41d7b5c44b528edc8993113
BLAKE2b-256 5867f9df19bf99da5af74d95d3e294370b48c949768901380b19510928a3e911

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page