FastAPI Microservices
Warning
I don't have the bandwidth to maintain this project. If you want to help me, please send a message on #71. I'll happily onboard you.
This project was highly inspired on tiangolo/full-stack-fastapi-postgresql.
About
This is a fully async FastAPI project.
The full stack of this project is composed by:
- FastAPI - A modern, fast (high-performance), web framework for building APIs with Python 3.6+ based on standard Python type hints.
- ARQ - Job queues and RPC in python with asyncio and redis.
- PostgreSQL - The World's Most Advanced Open Source Relational Database
- Redis - An open source (BSD licensed), in-memory data structure store, used as a database, cache, and message broker.
- Tilt - A multi-service dev environment for teams on Kubernetes.
Installation
For development purposes, we're going to use Tilt. Please install it, so we can continue.
After installing the above, you should be able to run the following:
minikube start
tilt up
The project generator is under development.
For now, you can play with the first user being [email protected]
/ password
.
Why creating this project?
I've seen a lot of projects and tutorials using FastAPI. Which is awesome, and it makes me happy!
Unfortunately, there were few that I could take as reference.
The only one that I've used for that purpose for a long time was the mentioned "full-stack-fastapi-postgresql". But as the time passed, I started to have my own vision about how a FastAPI project should be organized, and which technologies should be used as recommendation.
References
- django-postgres-skaffold-k8s
- fastapi-microservice-patterns
- Running Flask on Kubernetes
- Add Asynchronous SQLAlchemy example
- Asynchronous I/O (asyncio) SQLALchemy documentation
- Full Stack FastAPI and PostgreSQL - Base Project Generator
- The inner working of ARQ
- How we set up a production CI workflow with GitHub actions
- Using GitHub to deploy kubernetes
License
This project is under the MIT license.