Awesome Sanic
A curated list of awesome Sanic resources and extensions
Sanic is an Async Python 3.7+ web server that's written to go fast
User Guide | API Docs | Source | Forums | Discord
Contents
Extensions
Official
- Sanic Extensions: Extended Sanic functionality
- Sanic Testing: Test clients
- Sanic Docker: Docker images
- Sanic Assets: Official logo
API
- Sanic CRUD: CRUD REST API generation with peewee models.
- Sanic-GraphQL: GraphQL integration with Sanic
- Sanic-RestPlus: A port of Flask-RestPlus for Sanic. Full-featured REST API with SwaggerUI generation.
- Sanic-Transmute: A Sanic extension that generates APIs from python function and classes, and also generates Swagger UI/documentation automatically.
- Sanic-OpenAPI3e: A Sanic extension that allows you to decorate your routes and configure your OpenAPI spec v3.0 and swagger. Very high spec compliance, customisable.
- Sanic-REST-Framework: API rapid development framework for SANIC, Inspired by Django REST Framework, Has complete authority verification, authentication, serializer components, CBV suite, Depends on the tortoise ORM, Used together with srf_app_helper and tortoise-orm, You can get a smooth development experience like Django
Authentication
- Sanic-JWT: Authentication extension for JSON Web Tokens (JWT).
- Sanic-JWT-Extended: Port of flask-jwt-extended, provides access/refresh token with fresh, easy custom claim insertion, and role-based access control
- Sanic-OAuth: OAuth Library with many provider and OAuth1/OAuth2 support.
- Sanic-Token-Auth: Simple token-based authentication.
- Sanic-HTTPAuth: Fork of Flask-HTTPAuth, provides Basic, Digest and Token HTTP authentication for Sanic routes
- sanic-security: A powerful, simple, and async security library for Sanic.
- SanicApiKey: Simple api key based authentication.
- Sanic-Auth: A tiny extension provide a decorator @auth.login_required, without Authentication algorithm & Session manage (sanic-session can work togather).
- Sanic-Beskar: Strong, Simple, and Precise security for Sanic APIs.
Development
- Pytest-Sanic: A pytest plugin for Sanic. It helps you to test your code asynchronously.
- Sanic-OpenAPI: OpenAPI support, plus a Swagger UI.
- Sanic-Devtools: Dev tools for Sanic.
Frontend
- sanja: This module aims to make bringing Jinja templates to Sanic easy.
- Jinja2-sanic: a jinja2 template renderer for Sanic.
- Sanic-Babel: Adds i18n/l10n support to Sanic applications with the help of the
Babel
library - Sanic-CORS: A port of flask-cors.
- Sanic-Jinja2: Support for Jinja2 template.
- Sanic-Sass: Compile Sass & SCSS to CSS for Sanic.
Monitoring
- Sanic-Prometheus: Prometheus metrics for Sanic
- Prometheus-Sanic: Fork: dkruchinin/sanic-prometheus
- Sanic-Rollbar: Rollbar (exception reporting) integration for Sanic
- Sanic-Sentry: Sentry integration for Sanic.
- Sanic-Statsd: StatsD (currently only DataDog; WIP) metrics collection for Sanic
ORM
- GINO: A lightweight asynchronous ORM based on SQLAlchemy core, with asyncpg dialect and Sanic extension.
- Tortoise ORM: an easy-to-use asyncio orm like Django
- Sanic-Motor: Simple motor wrapper.
- Sanic-mongodb-extension: Extension for MongoDB with ฮผMongo ODM support for Sanic framework
- Mayim: The NOT ORM Python hydrator
Requests and Responses
- Webargs-Sanic: Sanic integration with Webargs. Parse & validate request arguments: headers, arguments, cookies, files, json, etc.
- Python-Sanicargs: Parse query args in Sanic using type annotations and a decorator.
- Sanic Brogz: Allows you to easily gzip Sanic responses. A port of Flask-Compress.
- Sanic Gzip: Add compression to your Sanic endpoints with a decorator
- Sanic-Limiter: Rate limiting for sanic.
- Sanic-UserAgent: Add
user_agent
to request - Sanic-SSLify: Forces SSL on your Sanic app. A port of Flask-SSLify.
- TuSanic: TuSanic is a tus.io (simple resumable uploads) server-side implementation for sanic
Caching
- Sanic-redis-extension: Redis (via aioredis) support for Sanic framework
Tracing
- Sanic-OpenTracing: Distributed tracing with OpenTracing.
Queues
- Sanic-amqp-extension: AMQP support for Sanic framework
Scaffolding
- Cookiecutter-Sanic: Get your sanic application up and running in a matter of second in a well defined project structure. Batteries included for deployment, unit testing, automated release management and changelog generation.
Session
- Sanic Sessions: Session support for humans. Works with different backends Redis, Mongodb, memcache or an in memory store.
Utils
- Python-Paginate: Simple pagination support.
- Sanic-Dispatch: A dispatcher inspired by
DispatcherMiddleware
in werkzeug. Can act as a Sanic-to-WSGI adapter. - Sanic-EnvConfig: Pull environment variables into your sanic config.
- sanic-sse: Server-Sent Events implementation for Sanic.
- Sanic-CamelCase-Middleware: Middleware for camelizing request and response bodies for sanic.
- Sanic-Pydantic: A library for parsing and validating http requests for sanic web-framework using pydantic library.
- sanic-dantic: a sanic request parameter check plugin based on pydantic. support FBV and CBV
- sanic-fire: An extension for Sanic that adds support for writing external commands to your application.
Resources
Examples
- SanicCRUD-vue: A example demo base Sanic with vueJS + webpack
- Sanic-Nginx-Docker-Example: Simple and easy to use example of Sanic behined nginx using docker-compose.
- Websocket PubSub Feed: A starting point for building a websocket-based pubsub feed with Redis
- Open Matchmaking Auth/Auth microservice: Authentication / Authorization microservice for Open Matchmaking platform
- Open Matchmaking Game servers pool microservice: Microservice for handling game servers pool
- Open Matchmaking Player statistics microservice: Storage for player statistics
- Sanic + Motor: A starting point for building Sanic application integrated with Motor Mongo DB
Tutorials
- Getting started with Sanic
- Super Fast Voice Broadcast with Asynchronous Python and Sanic
- Deploying an asynchronous Python microservice with Sanic and Zeit Now
- Part IโโโGetting started with the Sanic web framework: initial setup and https
- How to make your code fast and asynchronous with Python and Sanic
Books
- Python Web Development with Sanic: An in-depth guide for Python web developers to improve the speed and scalability of web applications, by Adam Hopkins
Videos and Podcasts
- Dougal Matthews - Async Web Apps with Sanic - EuroPython 2017
- Chris Hawkes - Python Sanic Tutorial
- Adam Hopkins, TalkPython - Episode #188: Async for the Pythonic web with Sanic
- Adam Hopkins, EuroPython 2020 - Overcoming access control in web APIs
- Adam Hopkins, PyConIL 2021 - Liberate your API: Building a task manager inside Sanic
- DevGuyAhnaf, Full Featured Discord.py Bot Dashboard - Part 1: Making the Bot - 4 Parts on YouTube
Built with Sanic
The following is a list of Sanic in production use.
- chrome-prerender
- Sanic-MDL-Blog
- aioquiz - workshop registration and execution
- ethereumd-proxy
- json-head: explained in Deploying an asynchronous Python microservice with Sanic and Zeit Now
- datasette - a tool for providing instant JSON API for your SQLite databases. More information here.
- devmap - Learning mindmaps
- NMT - Network Mapper Tool - A tool for mapping networks
- TuringNetwork - A NeuralNetwork Visualization tool built on/for PyTorch/ONNX
- exchangeratesapi.io - Exchange rates with currency conversion
- swagger-py-codegen - a Python web framework generator supports Sanic, Flask, Tornado, Falcon
- Simple-image-classifier - A microservice for image classification, based on tensorflow