A clean architecture template combining FastAPI, Dishka, and FastStream for building backend applications with HTTP APIs and async message processing.
FastAPI-Dishka-FastStream is a Python template that demonstrates clean architecture by combining FastAPI for HTTP APIs, Dishka for dependency injection, and FastStream for asynchronous message processing with RabbitMQ. It solves the problem of building structured, scalable backend applications that need to handle both synchronous web requests and asynchronous event-driven workflows in a maintainable way.
Backend developers and architects looking for a production-ready template to build Python applications with clean separation of concerns, dependency injection, and integrated message queue support.
Developers choose this template because it provides a battle-tested implementation of clean architecture with popular Python tools, reducing boilerplate and offering a clear pattern for building services that combine HTTP and messaging capabilities.
Template for app based on: FastAPI, dishka, faststream, sqlalchemy, pydantic
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Seamlessly combines FastAPI, Dishka, and FastStream to enforce separation of concerns, as shown in the structured codebase and Habr articles linked in the README, making it modular and testable.
Uses Dishka for managing dependencies, promoting loose coupling and improved testability, which is highlighted in the philosophy for better maintainability.
Integrates FastStream with RabbitMQ for event-driven workflows, demonstrated in the example commands for publishing and consuming AMQP messages.
Includes SQLAlchemy, Pydantic, Alembic, and Docker Compose for a full-stack setup, reducing boilerplate and supporting scalable deployments.
Requires multiple manual steps like Docker setup, environment configuration, and manual RabbitMQ queue creation, as detailed in the Quick Start section, which can be time-consuming.
Heavily tied to FastAPI, Dishka, and FastStream; switching to alternatives would require significant refactoring, limiting flexibility.
README references external articles in Russian, and lacks comprehensive guides for customization, which may hinder non-Russian speakers or newcomers.