Courses & TutorialsProgramming
Awesome FastAPI – Massive Collection of Resources
A curated list of awesome things related to FastAPI.
FastAPI is a modern, high-performance, batteries-included Python web framework that’s perfect for building RESTful APIs.
Contents
Third-Party Extensions
Admin
- FastAPI Admin – Functional admin panel that provides a user interface for performing CRUD operations on your data.
Auth
- FastAPI Auth – Pluggable auth that supports the OAuth2 Password Flow with JWT access and refresh tokens.
- FastAPI Login – Account management and authentication (based on Flask-Login).
- FastAPI JWT Auth – JWT auth (based on Flask-JWT-Extended).
- FastAPI Permissions – Row-level permissions.
- FastAPI Security – Implements authentication and authorization as dependencies in FastAPI.
- FastAPI Simple Security – Out-of-the-box API key security manageable through path operations.
- FastAPI Users – Account management, authentication, authorization.
Databases
ORMs
- FastAPI SQLAlchemy – Simple integration between FastAPI and SQLAlchemy.
- Tortoise ORM – An easy-to-use asyncio ORM (Object Relational Mapper) inspired by Django.
- FastAPI Example – An example of the Tortoise-ORM FastAPI integration.
- Tutorial: Setting up Tortoise ORM with FastAPI
- Aerich – Tortoise ORM migrations tools.
- GINO – A lightweight asynchronous ORM built on top of SQLAlchemy core for Python asyncio.
- ORM – An async ORM.
- ormar – An async mini ORM for Python.
Query Builders
- asyncpgsa – A wrapper around asyncpg for use with SQLAlchemy Core.
- Databases – Async SQL query builder that works on top of the SQLAlchemy Core expression language.
ODMs
- MongoEngine – A Document-Object Mapper (think ORM, but for document databases) for working with MongoDB from Python.
- Motor – Asynchronous Python driver for MongoDB.
- ODMantic – AsyncIO MongoDB ODM integrated with Pydantic.
Other Tools
- Pydantic-SQLAlchemy – Convert SQLAlchemy models to Pydantic models.
- FastAPI-CamelCase – CamelCase JSON support for FastAPI utilizing Pydantic.
- CamelCase Models with FastAPI and Pydantic – Accompanying blog post from the author of the extension.
Developer Tools
- FastAPI Client Generator – Generate a mypy- and IDE-friendly API client from an OpenAPI spec.
- FastAPI Versioning – API versioning.
- Jupyter Notebook REST API – Run your Jupyter notebooks as RESTful API endpoints.
- Manage FastAPI – CLI tool for generating and managing FastAPI projects.
- msgpack-asgi – Automatic MessagePack content negotiation.
- FastAPI Mail – Lightweight mail system for sending emails and attachments (individual and bulk).
Utils
- FastAPI Cache – A simple lightweight cache system.
- FastAPI Contrib – Opinionated set of utilities: pagination, auth middleware, permissions, custom exception handlers, MongoDB support, and Opentracing middleware.
- FastAPI Plugins – Redis and Scheduler plugins.
- FastAPI ServiceUtils – Generator for creating API services.
- FastAPI SocketIO – Easy integration for FastAPI and SocketIO.
- FastAPI Utilities – Reusable utilities: class-based views, response inferring router, periodic tasks, timing middleware, SQLAlchemy session, OpenAPI spec simplification.
- Prerender Python Starlette – Starlette middleware for Prerender.
- Prometheus FastAPI Instrumentator – A configurable and modular Prometheus Instrumentator for your FastAPI application.
- SlowApi – Rate limiter (based on Flask-Limiter).
- Starlette Prometheus – Prometheus integration for FastAPI and Starlette.
- Starlette Exporter – One more prometheus integration for FastAPI and Starlette.
- Starlette-OpenTracing – Opentracing support for Starlette and FastAPI.
Resources
Official Resources
- Documentation – Comprehensive documentation.
- Tutorial – Official tutorial showing you how to use FastAPI with most of its features, step by step.
- Source Code – Hosted on GitHub.
- Gitter Chat – Chat with other FastAPI users.
Podcasts
- Build The Next Generation Of Python Web Applications With FastAPI – In this episode of Podcast Init, the create of FastAPI, Sebastián Ramirez, shares his motivations for building FastAPI and how it works under the hood.
- FastAPI on PythonBytes – Nice overview of the project.
Articles
- Why we switched from Flask to FastAPI for production machine learning – In-depth look at why you may want to move from Flask to FastAPI.
Tutorials
- Demystifying Authentication with FastAPI and a Frontend – Add token-based authentication.
- Deploy Machine Learning Models with Keras, FastAPI, Redis and Docker
- Deploying Iris Classifications with FastAPI and Docker – Dockerizing a FastAPI application.
- Developing and Testing an Asynchronous API with FastAPI and Pytest – Develop and test an asynchronous API with FastAPI, Postgres, Pytest, and Docker using Test-Driven Development.
- FastAPI for Flask Users – Learn FastAPI with a side-by-side code comparison to Flask.
- FastAPI Microservice Patterns – Blog post series with exemplary implementations of microservice patterns.
- Local Development Environment – Skaffold, docker, kubectl and minikube in a nutshell.
- Service discovery in Container Orchestration Platforms – Enabling FastAPI service communication in Kubernetes explained.
- Asynchronous Communication – Enabling loosely coupled services with messaging.
- Application monitoring – Application metric monitoring with Prometheus and Grafana.
- How to deploy your ConvNet classifier with Keras and FastAPI – Deploy a machine learning model via a web-based API.
- How to monitor your FastAPI service – Explains how to implement Application Performance Monitoring (APM) using OpenTelemetry and Datadog/Jaeger.
- Introducing FARM Stack – FastAPI, React, and MongoDB – Getting started with a complete FastAPI web application stack.
- Introduction to the FastAPI Python Framework – Quick intro to FastAPI.
- Porting Flask to FastAPI for ML Model Serving – Comparison of Flask vs FastAPI.
- Real-time data streaming using FastAPI and WebSockets – Learn how to stream data from FastAPI directly into a real-time chart.
- Serving Machine Learning Models with FastAPI in Python – Use FastAPI to quickly and easily deploy and serve machine learning models in Python as a RESTful API.
Talks
- PyConBY 2020: Serve ML models easily with FastAPI – From the talk by Sebastian Ramirez you will learn how to easily build a production-ready web (JSON) API for your ML models with FastAPI, including best practices by default.
- PyCon UK 2019: FastAPI from the ground up – This talk shows how to build a simple REST API for a database from the ground up using FastAPI.
Videos
- Building a Stock Screener with FastAPI – A you build a web-based stock screener with FastAPI, you’ll be introduced to many of FastAPI’s features, including pydantic models, dependency injection, background tasks, and SQLAlchemy integration.
- Building Web APIs Using FastAPI – Use FastAPI to build a web application programming interface (RESTful API).
- FastAPI – A Web Framework for Python – See how to do numeric validations with FastAPI.
- FastAPI vs. Django vs. Flask – Which framework is best for Python in 2020? Which uses async/await the best? Which is the fastest?
- Serving Machine Learning Models As API with FastAPI – Build a machine learning API with FastAPI.
Courses
- Test-Driven Development with FastAPI and Docker – Learn how to build, test, and deploy a text summarization microservice with Python, FastAPI, and Docker.
Hosting
PaaS
(Platforms-as-a-Service)
- Heroku (Step-by-step tutorial, ML model on Heroku tutorial)
- AWS Elastic Beanstalk
- Google App Engine
- Microsoft Azure App Service
- Deta (example)
IaaS
(Infrastructure-as-a-Service)
Serverless
Frameworks:
- Chalice
- Mangum – Adapter for running ASGI applications with AWS Lambda and API Gateway.
- Vercel – (formerly Zeit) (example).
- Zappa
Compute:
Projects
Boilerplate
- Full Stack FastAPI and PostgreSQL – Base Project Generator – Full stack, modern web application generator, which includes FastAPI, PostgreSQL, Docker, Celery, Vue frontend, automatic HTTPS and more (developed by the creator of FastAPI, Sebastián Ramírez).
- FastAPI and Tortoise ORM – Powerful but simple template for web APIs w/ FastAPI (as web framework) and Tortoise-ORM (for working via database without headache).
- FastAPI Model Server Skeleton – Skeleton app to serve machine learning models production-ready.
- cookiecutter-spacy-fastapi – Quick deployments of spaCy models with FastAPI.
- cookiecutter-fastapi – Cookiecutter template for FastAPI projects using: Machine Learning, Poetry, Azure Pipelines and pytest.
- openapi-python-client – Generate modern FastAPI Python clients (via FastAPI) from OpenAPI.
- Pywork – Yeoman generator to scaffold a FastAPI app.
- uvicorn-gunicorn-fastapi-docker – Docker image with Uvicorn managed by Gunicorn for high-performance FastAPI web applications in Python 3.7 and 3.6 with performance auto-tuning.
- fastapi-gino-arq-uvicorn – Tempate for a high-performance async REST API, in Python. FastAPI + GINO + Arq + Uvicorn (w/ Redis and PostgreSQL).
- FastAPI and React Template – Full stack cookiecutter boilerplate using FastAPI, TypeScript, Docker, PostgreSQL, and React.
- FastAPI Nano – Simple FastAPI template with factory pattern architecture.
Open Source Projects
- Awesome FastAPI Projects – Organized list of projects that use FastAPI.
- Bitcart – Platform for merchants, users and developers which offers easy setup and use.
- Dispatch – Manage security incidents.
- FastAPI CRUD Example:
- FastAPI Websocket Broadcast – Websocket ‘broadcast’ demo.
- FastAPI with Celery, RabbitMQ, and Redis – Minimal example utilizing FastAPI and Celery with RabbitMQ for task queue, Redis for Celery backend, and Flower for monitoring the Celery tasks.
- JSON-RPC Server – JSON-RPC server based on FastAPI.
- Mailer – Dead-simple mailer micro-service for static websites.
- RealWorld Example App – mongo
- RealWorld Example App – postgres
- redis-streams-fastapi-chat – A simple Redis Streams backed chat app using Websockets, Asyncio and FastAPI/Starlette.
- Sprites as a service – Generate your personal 8-bit avatars using Cellular Automata.
- Slackers – Slack webhooks API.
- TermPair – View and control terminals from your browser with end-to-end encryption.
- Universities – API service for obtaining information about +9600 universities worldwide.