Novo post no blog: injeção de dependência com Dishka e FastAPI.

O sistema nativo de Depends() do FastAPI é ótimo até o momento em que você precisa de ciclos de vida diferentes por dependência, reutilizar serviços num worker Celery ou testar sem depender de banco real. A partir daí, começa a doer.

O artigo mostra como usar o Dishka — um container de IoC que entende escopo — para resolver isso: providers por Scope.APP e Scope.REQUEST, cleanup via yield, integração com FastAPI e testes com container substituto sem app.dependency_overrides.

https://www.riverfount.dev.br/posts/ioc_dishka/

#python #fastapi #dishka #arquitetura

Injeção de dependência do jeito certo: IoC com Dishka e FastAPI

Você já escreveu algo assim numa aplicação FastAPI? 1 2 3 4 5 6 7 8 9 @router.get("/orders/{order_id}") async def get_order(order_id: int): db = SessionLocal() try: repo = OrderRepository(db) service = OrderService(repo, settings.TAX_RATE) return await service.get_order(order_id) finally: db.close() O código funciona. Mas há um problema sério: cada endpoint é responsável por montar sua própria árvore de dependências. Quando OrderService precisar de um CacheClient e de um EventPublisher, quem vai sofrer é quem escreve — e depois testa — cada endpoint. O FastAPI tem seu próprio sistema de Depends() que resolve parte disso, mas tem limites quando a aplicação cresce e os grafos de dependência ficam complexos. É aqui que entra o conceito de Inversão de Controle e, mais especificamente, uma biblioteca que acerta onde o Depends() tropeça: o Dishka.

Blog do Riverfount

Практическое тестирование приложений

Всем привет! Эта статья — продолжение материала про универсальный прототип бэкенд-приложений. В ней я поделюсь практическим опытом написания тестов и покажу, как выбранная архитектура упрощает этот процесс. Ну что ж, приступим

https://habr.com/ru/articles/958014/

#python #faststream #dishka #litestar #fastapi #sqlalchemy #pydantic #asgi #pytest

Практическое тестирование приложений

Всем привет! Эта статья — продолжение материала про универсальный прототип бэкенд-приложений . В ней я поделюсь практическим опытом написания тестов и покажу, как выбранная архитектура упрощает этот...

Хабр

Год с Dishka: какой он — модный DI-контейнер?

Привет, Хабр, меня зовут Юрий, я уже год использую хайповый IoC‑контейнер dishka и хочу немного поделиться опытом эксплуатации. Мой проект — движок для городской ночной поисковой игры «Схватка» («Энкаунтер» или «Дозоры»). Проект полностью open source .

https://habr.com/ru/articles/894286/

#python #dishka #diконтейнер #iocконтейнер #dependency_injection

Год с Dishka: какой он — модный DI-контейнер?

Привет, Хабр, меня зовут Юрий, я уже год использую хайповый IoC‑контейнер dishka и хочу немного поделиться опытом эксплуатации. Мой проект — движок для городской ночной поисковой игры...

Хабр

FastAPI и Dependency Injection: правда или вымысел?

В свое время FastAPI прогремел как гром среди ясного неба - тут тебе и минималистичный API аля- Flask (все устали от Django , диктующего свои правила), и OpenAPI документация из коробки, и удобное тестирование, и хайповая асинхронность. Буквально все, что нужно для свободы творчества, и никаких ограничений! Да еще и Depends завезли! В тот момент это был культрурный шок - Dependency Injection в Python ? Разве это не что-то из Java ? Но дьявол кроется в деталях. А вы уверены, что те самые Depends == Dependency Injection ? Уверены, что пишете код на FastAPI правильно? В рамках статьи мы рассмотрим различные подходы к организации зависимостей в рамках FastAPI проекта, оценим их с точки зрения удобства использования и постараемся разобраться, как же все-таки "правильно" готовить DI в FastAPI . Давайте разбираться

https://habr.com/ru/articles/867040/

#fastapi #dishka #dependency_injection #dependency_inversion #solid #clean_architecture #python #web

FastAPI и Dependency Injection: правда или вымысел?

В свое время FastAPI прогремел как гром среди ясного неба - тут тебе и минималистичный API аля- Flask (все устали от Django , диктующего свои правила), и OpenAPI документация из коробки, и удобное...

Хабр

Пишем универсальный прототип бэкенд-приложения: Litestar, FastStream, dishka

Привет, Хабр! Меня зовут Сергей, я техлид в команде PT BlackBox. Мы с коллегами разрабатываем продукт, который позволяет обнаруживать уязвимости в приложениях методом черного ящика. Фактически мы сами и пишем веб-приложения, и именно о них пойдет речь в статье. Я бы хотел с вами поделиться своими наработками по теме бэкенд-приложений и предоставить вам шаблон-прототип, который, как мне кажется, может закрыть подавляющее большинство потребностей при их разработке. Для написания прототипа я буду использовать Litestar , FastStream и dishka . Эта статья будет особенно полезна тем, кто пишет на Tornado, Django, Flask или AIOHTTP и хочет перейти на более актуальные технологии для дальнейшего развития своих проектов на современных рельсах. Ну что ж, приступим

https://habr.com/ru/companies/pt/articles/820171/

#python #Litestar #прототип #web #faststream #asgi #sqlalchemy #alembic #pydantic #dishka

Пишем универсальный прототип бэкенд-приложения: Litestar, FastStream, dishka

Привет, Хабр! Меня зовут Сергей, я техлид в команде PT BlackBox. Мы с коллегами разрабатываем продукт, который позволяет обнаруживать уязвимости в приложениях методом черного ящика. Фактически мы сами...

Хабр