Asincio yang luar biasa
Daftar kerangka kerja, pustaka, perangkat lunak, dan sumber daya asyncio Python yang dikurasi dengan cermat.
Modul Python asyncio yang diperkenalkan ke perpustakaan standar dengan Python 3.4 menyediakan infrastruktur untuk menulis kode serentak single-thread menggunakan coroutine, multiplexing akses I/O melalui soket dan sumber daya lainnya, menjalankan klien dan server jaringan, dan primitif terkait lainnya.
Asyncio sebenarnya bukanlah sebuah teknologi baru namun sepertinya sudah menjadi tren sejak beberapa tahun lalu - terutama di komunitas Python dan dengan dirilisnya Python 3.4 pada bulan Maret 2014. Oleh karena itu, cukup sulit untuk selalu mengikuti perkembangan terkini dengan paket paling keren di luar sana. Temukan beberapa paket luar biasa tersebut di sini dan jika Anda melewatkan satu paket, kami mengandalkan Anda untuk membuat Masalah atau Permintaan Tarik dengan saran Anda.
Isi
- Kerangka Web
- Antrean Pesan
- Driver Basis Data
- Jaringan
- GrafikQL
- Pengujian
- Loop Alternatif
- Lain-lain
- Tulisan
- Pembicaraan
- Alternatif untuk asyncio
Kerangka Web
Perpustakaan untuk membangun aplikasi web.
- FastAPI - Kerangka kerja Python 3.6+ API berkinerja sangat tinggi berdasarkan petunjuk tipe. Didukung oleh Starlette dan Pydantic.
- Django - Kerangka web Python tingkat tinggi yang mapan dengan komunitas dan ekosistem yang besar.
- Starlette - Kerangka kerja/perangkat ASGI yang ringan untuk membangun layanan berkinerja tinggi.
- aiohttp - Klien/server Http untuk asyncio (PEP-3156).
- sanic - Server web Python 3.5+ yang ditulis untuk bekerja cepat.
- Quart - Kerangka mikro web asyncio dengan API yang sama dengan Flask.
- autobahn - WebSocket dan WAMP mendukung asyncio dan Twisted, untuk klien dan server.
- websockets - Pustaka untuk membangun server dan klien WebSocket dengan Python dengan fokus pada kebenaran dan kesederhanaan.
- Tornado - Kerangka web berkinerja baik dan perpustakaan jaringan asinkron.
- uvicorn - Server ASGI secepat kilat.
Antrean Pesan
Perpustakaan untuk mengimplementasikan aplikasi menggunakan antrian pesan.
- aioamqp - Implementasi AMQP menggunakan asyncio.
- pyzmq - Pengikatan Python untuk ZeroMQ.
- aiozmq - Integrasi Asyncio alternatif dengan ZeroMQ.
- crossbar - Crossbar.io adalah platform jaringan untuk aplikasi terdistribusi dan layanan mikro.
- asyncio-nats - Klien untuk sistem pesan NATS.
- aiokafka - Klien untuk Apache Kafka.
Driver Basis Data
Perpustakaan untuk terhubung ke database.
- asyncpg - Pustaka Klien Database PostgreSQL Cepat untuk Python/asyncio.
- asyncpgsa - Asyncpg dengan dukungan inti sqlalchemy.
- aiopg - Perpustakaan untuk mengakses database PostgreSQL.
- aiomysql - Perpustakaan untuk mengakses database MySQL
- aioodbc - Perpustakaan untuk mengakses database ODBC.
- motor - Driver Python async untuk MongoDB.
- redis-py - Klien Redis Python (yang mencakup aioreadis sekarang).
- aiocouchdb - Klien CouchDB dibangun di atas aiohttp (asyncio).
- aioinflux - Klien InfluxDB dibangun di atas aiohttp.
- aioes - Driver yang kompatibel dengan Asyncio untuk elasticsearch.
- peewee-async - Implementasi ORM berdasarkan peewee dan aiopg.
- GINO - adalah ORM Python asinkron ringan berdasarkan inti SQLAlchemy, dengan dialek asyncpg.
- Tortoise ORM - ORM multi-backend asli dengan API mirip Django dan manajemen hubungan yang mudah.
- Basis Data - Akses basis data asinkron untuk inti SQLAlchemy, dengan dukungan untuk PostgreSQL, MySQL, dan SQLite.
- Prisma Client Python - ORM aman yang dibuat secara otomatis dan diketik sepenuhnya yang didukung oleh Pydantic dan dirancang khusus untuk skema Anda - mendukung SQLite, PostgreSQL, MySQL, MongoDB, MariaDB, dan banyak lagi.
- Piccolo - Pembuat ORM/kueri yang dapat bekerja dalam mode async dan sinkronisasi, dengan GUI admin yang bagus, dan middleware ASGI.
- Beanie - MongoDB ODM async yang dibangun di atas motor dan Pydantic.
Jaringan
Perpustakaan untuk berkomunikasi di jaringan Anda.
- AsyncSSH - Menyediakan implementasi klien dan server asinkron dari protokol SSHv2.
- aiodns - Penyelesai DNS sederhana untuk asyncio.
- aioping - Implementasi asyncio yang cepat dari protokol ICMP (ping).
- httpx - klien HTTP asinkron untuk Python 3 dengan API yang kompatibel dengan permintaan.
GrafikQL
Perpustakaan untuk membangun server GraphQL.
- Ariadne - Pustaka Python pertama skema untuk mengimplementasikan server GraphQL.
- Tartiflette - Mesin Python 3.6+ GraphQL pertama skema yang dibangun di atas
libgraphqlparser
. - Strawberry - Server Python 3 GraphQL yang mengutamakan kode dengan dukungan Django, Flask dan FastAPI/Starlette.
Pengujian
Perpustakaan untuk menguji aplikasi berbasis asyncio.
- aiomock - Pustaka tiruan python yang mendukung metode async.
- asynctest - Tingkatkan paket unittest standar dengan fitur untuk pengujian. perpustakaan asyncio
- pytest-asyncio - Dukungan Pytest untuk asyncio.
- aresponses - Asyncio http mengejek. Mirip dengan perpustakaan tanggapan yang digunakan untuk permintaan.
- aioresponses - Pembantu untuk permintaan web tiruan/palsu dalam paket Python aiohttp.
Loop Alternatif
Implementasi loop asyncio alternatif.
- uvloop - Implementasi loop acara asyncio yang sangat cepat di atas libuv.
Lain-lain
Perpustakaan asyncio mengagumkan lainnya.
- aiochan - Konkurensi gaya CSP dengan saluran, pilih dan multiprosesing di atas asyncio.
- aiocache - Manajer cache untuk backend yang berbeda.
- aiofiles - Dukungan file untuk asyncio.
- aiopath -
pathlib
asinkron untuk asyncio. - aiodebug - Perpustakaan kecil untuk memantau dan menguji program asyncio.
- aiorun - Fungsi
run()
yang menangani semua boilerplate biasa untuk startup dan shutdown dengan baik. - aiosc - Implementasi Kontrol Suara Terbuka Ringan.
- aioserial - Pengganti pySerial.
- aiozipkin - Instrumentasi penelusuran terdistribusi untuk asyncio dengan zipkin
- asgiref - Utilitas backend untuk integrasi ASGI ke WSGI, termasuk pembungkus fungsi sync_to_async dan async_to_sync.
- async_property - Dekorator Python untuk properti async.
- ruia - Kerangka mikro pengikisan web async berdasarkan asyncio.
- kubernetes_asyncio - Pustaka klien asinkron untuk Kubernetes.
- aiomisc - Utilitas lain-lain untuk
asyncio
. - taskiq - Pengelola tugas terdistribusi asinkron (seperti seledri, tetapi asinkron).
Tulisan
Dokumentasi, postingan blog, dan tulisan keren lainnya tentang asyncio.
- Dokumentasi asyncio resmi - I/O asinkron, loop peristiwa, coroutine, dan tugas.
- Pengantar singkat yang ditulis dengan baik tentang asyncio - Generator, Coroutine, Native Coroutine, dan async/menunggu.
- AsyncIO untuk Pengembang Python yang Bekerja - Pengenalan singkat tentang pemrograman asinkron mulai dari contoh dasar hingga pengambilan URL.
- Batas pengujian Python aiohttp - Membuat 1 juta permintaan dengan python-aiohttp.
- ASGI (Asynchronous Server Gateway Interface) - Penerus spiritual WSGI, dimaksudkan untuk menyediakan antarmuka standar antara server web, kerangka kerja, dan aplikasi Python berkemampuan async.
- Prinsip Pertama Pengantar Asyncio - Pengenalan prinsip pertama yang tidak ada kata kunci tentang cara kerja internal asyncio.
- Mengembangkan dan Menguji API Asinkron dengan FastAPI dan Pytest - Tutorial ini membahas cara mengembangkan dan menguji API asinkron dengan FastAPI menggunakan Test-Driven Development (TDD).
- Konkurensi Python dengan asyncio - Pelajari cara mempercepat kode Python yang lambat dengan pemrograman serentak dan pustaka asyncio yang mutakhir.
Pembicaraan
Rekaman pembicaraan mengagumkan tentang asyncio.
- Topik Menarik (Python Asyncio) | siaran layar | slide - Pembicara utama PyCon Brasil 2015 (David Beazley).
- Panduan I/O Asinkron Python - panduan kode 8 bagian (Philip Guo).
- Async/menunggu dengan Python 3.5 dan mengapa ini mengagumkan - EuroPython 2016 (Yury Selivanov).
- Ketakutan dan Penantian di Async: Perjalanan Biadab Menuju Inti Impian Coroutine | screencast - pembicara utama PyOhio 2016 (David Beazley).
- Python Asinkron untuk Pemula Lengkap | slide - PyCon 2017 (Miguel Grinberg).
- Mengungkap Kata Kunci Async dan Await Python - JetBrains TV 2020 (Michael Kennedy)
Alternatif untuk asyncio
Pendekatan alternatif untuk pemrograman async dengan Python, beberapa di antaranya berupaya mendukung beberapa kompatibilitas dengan asyncio
, yang lain tidak kompatibel sama sekali.
- curio - Perpustakaan konkurensi coroutine.
- Jembatan Curio-Asyncio - curio dasar -> jembatan coroutine asyncio.
- trio - I/O asinkron Pythonic untuk manusia dan manusia ular.
- trio-asyncio - implementasi ulang mainloop asyncio di atas Trio.
- AnyIO - Kerangka kerja jaringan dan konkurensi asinkron tingkat tinggi yang bekerja di atas trio atau asyncio.