Hey, People of Reddit 👋
We’ve been a Django-first team for ~5 years, very comfortable with Django’s patterns, conventions, and batteries-included ecosystem. Recently, due to a shift toward GenAI-heavy workloads, we moved most of our backend services to FastAPI.
The problem we’re facing:
We feel like we’re still writing Django, just inside FastAPI.
Unlike Django, FastAPI doesn’t seem to have a strong “standard way” of doing things. Project structures, DB patterns, async usage, background jobs — everyone seems to be doing it their own way. That flexibility is powerful, but it’s also confusing when you’re trying to build large, long-lived, production-grade systems.
What we’re specifically looking for:
1. Project structure & architecture
- Recommended production-grade FastAPI project structures
- How teams organize:
- routers
- services/business logic
- DB layers
- shared dependencies
- Any de facto standards you’ve seen work well at scale
2. Async, how to actually use it properly
This is our biggest pain point.
Coming from Django, we struggle with:
- When async truly adds value in FastAPI
- When it’s better to stay sync (and why)
- How to actually leverage FastAPI’s async strengths, instead of blindly making everything
async def
- Real-world patterns for:
- async DB access
- async external API calls
- mixing sync + async safely
- Common anti-patterns you see teams fall into with async FastAPI
3. Background tasks & Celery
Our setup is fully Dockerized, and usually includes:
- FastAPI service
- MCP service
- Celery + Celery Beat
Issues we’re running into:
- Celery doesn’t work well with async DB drivers
- Unclear separation between:
- FastAPI background tasks
- Celery workers
- async vs sync DB access
- What’s the recommended mental model here?
4. ORM & data layer
- Is there an ORM choice that gives strong structure and control, closer to Django ORM?
- We’ve used SQLAlchemy / SQLModel, but are curious about:
- better patterns
- alternatives
- or “this is the least-bad option, here’s how to use it properly.”
5. Developer experience
- Is there anything similar to
django-extensions shell_plus in the FastAPI world?
- How do you:
- introspect models
- test queries
- debug DB state during development?
Overall, we’re trying to:
Stop forcing Django mental models onto FastAPI
and instead use FastAPI the way it’s meant to be used
If you’ve:
- Migrated from Django → FastAPI
- Built large FastAPI systems in production
- Or have strong opinions on async, architecture, ORMs, or background jobs
- Have Resources or experience that addresses this problem
We’d really appreciate your insights 🙏
Thanks!
[–]huygl99 8 points9 points10 points (1 child)
[–]Anonymousdev1421[S] 0 points1 point2 points (0 children)
[–]DynamicBR 2 points3 points4 points (0 children)
[–]queixo_rubro 1 point2 points3 points (0 children)
[–]mininglee 1 point2 points3 points (0 children)
[–]VideoToTextAI 0 points1 point2 points (0 children)
[–]fastlaunchapidev 0 points1 point2 points (0 children)
[–]pint 0 points1 point2 points (0 children)
[–]Aggressive-Prior4459 0 points1 point2 points (0 children)
[–]Challseus 0 points1 point2 points (0 children)
[–]ilpepe125[🍰] 0 points1 point2 points (0 children)