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.2.tar.gz (101.3 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.2-py3-none-any.whl (5.5 kB view details)

Uploaded Python 3

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

Hashes for adc_stack-0.1.2.tar.gz
Algorithm Hash digest
SHA256 7a1ff491efa1ac26a5de7a1c45a71dbdf7daab65f19a247d9a7005b15a64e26b
MD5 14ddc09dbf8d326d0e6bd6aa83be481f
BLAKE2b-256 c8030eb0122db402277255d05a92484fed023b573d22cc0f302afec700a18a4f

See more details on using hashes here.

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

Hashes for adc_stack-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 8dcf458304763f2afb15fef33bf20515c52db240d68f9e851452b8f52e1c7ad7
MD5 5ff5bf44124e62e006ff39b800509675
BLAKE2b-256 dc5873f1b1550e0eb7344977aebcaad1ba0debff3e88747f23ed04785b2674d0

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