Assíncio incrível
Uma lista cuidadosamente selecionada de incríveis estruturas, bibliotecas, software e recursos assíncronos do Python.
O módulo Python asyncio introduzido na biblioteca padrão com Python 3.4 fornece infraestrutura para escrever código simultâneo de thread único usando corrotinas, multiplexar acesso de E/S sobre soquetes e outros recursos, executar clientes e servidores de rede e outras primitivas relacionadas.
Asyncio não é realmente uma tecnologia totalmente nova, mas parece estar em alta há alguns anos - especialmente na comunidade Python e com o lançamento do Python 3.4 em março de 2014. Portanto, é muito difícil manter-se atualizado. com os pacotes mais incríveis que existem. Encontre alguns desses pacotes incríveis aqui e se estiver faltando algum contamos com você para criar um Issue ou Pull Request com sua sugestão.
Conteúdo
- Estruturas Web
- Filas de mensagens
- Drivers de banco de dados
- Rede
- GráficoQL
- Teste
- Loops Alternativos
- Diversos
- Escritos
- Palestras
- Alternativas para oassíncio
Estruturas Web
Bibliotecas para construir aplicações web.
- FastAPI - Uma estrutura de API Python 3.6+ de altíssimo desempenho baseada em dicas de tipo. Desenvolvido por Starlette e Pydantic.
- Django - Uma estrutura web Python estabelecida e de alto nível com uma enorme comunidade e ecossistema.
- Starlette - Uma estrutura/kit de ferramentas ASGI leve para construir serviços de alto desempenho.
- aiohttp - Cliente/servidor HTTP para assíncio (PEP-3156).
- sanic - Servidor web Python 3.5+ escrito para ser rápido.
- Quart - Um microframework web assíncio com a mesma API do Flask.
- autobahn - WebSocket e WAMP com suporte a assíncio e Twisted, para clientes e servidores.
- websockets – Uma biblioteca para construção de servidores e clientes WebSocket em Python com foco na correção e simplicidade.
- Tornado - Framework web de alto desempenho e biblioteca de rede assíncrona.
- uvicorn - O servidor ASGI extremamente rápido.
Filas de mensagens
Bibliotecas para implementar aplicações usando filas de mensagens.
- aioamqp - implementação AMQP usando assíncio.
- pyzmq - ligações Python para ZeroMQ.
- aiozmq - Integração alternativa do Asyncio com ZeroMQ.
- crossbar - Crossbar.io é uma plataforma de rede para aplicativos distribuídos e de microsserviços.
- asyncio-nats - Cliente para o sistema de mensagens NATS.
- aiokafka - Cliente para Apache Kafka.
Drivers de banco de dados
Bibliotecas para conexão com bancos de dados.
- asyncpg - Biblioteca cliente de banco de dados PostgreSQL rápida para Python/asyncio.
- asyncpgsa - Asyncpg com suporte central sqlalchemy.
- aiopg - Biblioteca para acessar um banco de dados PostgreSQL.
- aiomysql - Biblioteca para acessar um banco de dados MySQL
- aiodbc - Biblioteca para acessar bancos de dados ODBC.
- motor - O driver Python assíncrono para MongoDB.
- redis-py - Cliente Redis Python (que agora inclui aioreadis).
- aiocouchdb - cliente CouchDB construído sobre aiohttp (asyncio).
- aioinflux - cliente InfluxDB construído sobre aiohttp.
- aioes - Driver compatível com Asyncio para elasticsearch.
- peewee-async - implementação ORM baseada em peewee e aiopg.
- GINO - é um ORM Python assíncrono leve baseado no núcleo SQLAlchemy, com dialeto asyncpg.
- Tortoise ORM - ORM multi-backend nativo com API semelhante ao Django e fácil gerenciamento de relações.
- Bancos de dados - Acesso assíncrono ao banco de dados para o núcleo SQLAlchemy, com suporte para PostgreSQL, MySQL e SQLite.
- Prisma Client Python - Um ORM gerado automaticamente e totalmente seguro, desenvolvido pela Pydantic e adaptado especificamente para o seu esquema - suporta SQLite, PostgreSQL, MySQL, MongoDB, MariaDB e muito mais.
- Piccolo - Um construtor ORM/query que pode funcionar nos modos assíncrono e sincronizado, com uma interface de administração agradável e middleware ASGI.
- Beanie - Um ODM assíncrono do MongoDB construído em motor e Pydantic.
Rede
Bibliotecas para se comunicar em sua rede.
- AsyncSSH - Fornece uma implementação assíncrona de cliente e servidor do protocolo SSHv2.
- aiodns - Resolvedor DNS simples para assíncrono.
- aioping - Implementação assíncrona rápida do protocolo ICMP (ping).
- httpx - cliente HTTP assíncrono para Python 3 com API compatível com solicitações.
GráficoQL
Bibliotecas para construir servidores GraphQL.
- Ariadne – biblioteca Python pioneira no esquema para implementação de servidores GraphQL.
- Tartiflette - primeiro mecanismo Python 3.6+ GraphQL do esquema construído sobre
libgraphqlparser
. - Strawberry - Servidor Python 3 GraphQL com código inicial e suporte para Django, Flask e FastAPI/Starlette.
Teste
Bibliotecas para testar aplicativos baseados em assíncio.
- aiomock - Uma biblioteca simulada python que suporta métodos assíncronos.
- asynctest - Aprimore o pacote unittest padrão com recursos para teste. bibliotecas assíncronas
- pytest-asyncio - Suporte Pytest para assíncio.
- aresponses - zombaria de http assíncio. Semelhante à biblioteca de respostas usada para solicitações.
- aioresponses - Auxiliar para solicitações da web simuladas/falsas no pacote Python aiohttp.
Loops Alternativos
Implementações alternativas de loop assíncio.
- uvloop - Implementação ultrarrápida de loop de eventos assíncronos no topo da libuv.
Diversos
Outras bibliotecas assíncronas incríveis.
- aiochan - simultaneidade estilo CSP com canais, seleção e multiprocessamento além de assíncio.
- aiocache – Gerenciador de cache para diferentes backends.
- aiofiles - Suporte de arquivo para assíncio.
- aiopath -
pathlib
assíncrono para assíncrono. - aiodebug – Uma pequena biblioteca para monitorar e testar programas assíncronos.
- aiorun - Uma função
run()
que lida com todos os padrões usuais para inicialização e desligamento normal. - aiosc - Implementação leve de controle de som aberto.
- aioserial - Um substituto imediato do pySerial.
- aiozipkin - Instrumentação de rastreamento distribuída para assíncrono com zipkin
- asgiref - Utilitários de back-end para integração ASGI para WSGI, inclui wrappers de função sync_to_async e async_to_sync.
- async_property - Decorador Python para propriedades assíncronas.
- ruia - Uma microestrutura de web scraping assíncrona baseada em asyncio.
- kubernetes_asyncio – Biblioteca cliente assíncrona para Kubernetes.
- aiomisc - Utilitários diversos para
asyncio
. - taskiq - Gerenciador de tarefas distribuídas assíncronas (como o aipo, mas assíncrono).
Escritos
Documentação, postagens de blog e outros escritos incríveis sobre asyncio.
- Documentação oficial do assíncrono - E/S assíncrona, loop de eventos, corrotinas e tarefas.
- Introdução curta e bem escrita ao asyncio - Geradores, Corrotinas, Corrotinas Nativas e async/await.
- AsyncIO para o desenvolvedor Python ativo - Uma introdução suave à programação assíncrona, desde exemplos básicos até a busca de URL.
- Limites de teste do Python aiohttp - Fazendo 1 milhão de solicitações com python-aiohttp.
- ASGI (Asynchronous Server Gateway Interface) - Um sucessor espiritual do WSGI, destinado a fornecer uma interface padrão entre servidores web, estruturas e aplicativos Python com capacidade assíncrona.
- Introdução aos primeiros princípios ao Asyncio - Uma introdução simples aos primeiros princípios ao funcionamento interno do assíncio.
- Desenvolvendo e testando uma API assíncrona com FastAPI e Pytest - Este tutorial analisa como desenvolver e testar uma API assíncrona com FastAPI usando Test-Driven Development (TDD).
- Simultaneidade Python com asyncio - Aprenda como acelerar o código Python lento com programação simultânea e a biblioteca asyncio de última geração.
Palestras
Gravações de palestras incríveis sobre assíncio.
- Tópicos de interesse (Python Asyncio) | transmissão de tela | slides - palestra da PyCon Brasil 2015 (David Beazley).
- Passo a passo de E/S assíncrona em Python - passo a passo do código em 8 partes (Philip Guo).
- Async/await em Python 3.5 e por que é incrível - EuroPython 2016 (Yury Selivanov).
- Medo e espera em assíncrono: uma jornada selvagem ao coração do sonho da rotina | screencast - palestra do PyOhio 2016 (David Beazley).
- Python assíncrono para iniciantes | slides - PyCon 2017 (Miguel Grinberg).
- Desmistificando as palavras-chave Async e Await do Python - JetBrains TV 2020 (Michael Kennedy)
Alternativas para oassíncio
Abordagens alternativas para programação assíncrona em Python, algumas das quais tentam suportar alguma compatibilidade com asyncio
, outras não são nada compatíveis.
- curio - A biblioteca de simultaneidade de corrotinas.
- Ponte Curio-Asyncio - curiosidade básica -> ponte asyncio coroutine.
- trio - E/S assíncrona Pythonic para humanos e cobras.
- trio-asyncio - reimplementação do mainloop asyncio no topo do Trio.
- AnyIO - Simultaneidade assíncrona de alto nível e estrutura de rede que funciona sobre trio ou assíncrono.