อะซินซิโอที่ยอดเยี่ยม
รายการกรอบงาน Python asyncio ที่ยอดเยี่ยม ไลบรารี ซอฟต์แวร์ และทรัพยากรที่คัดสรรมาอย่างดี
โมดูล Python asyncio ที่นำมาใช้กับไลบรารีมาตรฐานด้วย Python 3.4 มีโครงสร้างพื้นฐานสำหรับการเขียนโค้ดแบบเธรดเดี่ยวพร้อมกันโดยใช้ coroutines การเข้าถึง I/O แบบมัลติเพล็กซ์บนซ็อกเก็ตและทรัพยากรอื่น ๆ การรันไคลเอ็นต์เครือข่ายและเซิร์ฟเวอร์ และพื้นฐานอื่น ๆ ที่เกี่ยวข้อง
Asyncio ไม่ใช่เทคโนโลยีใหม่ล่าสุด แต่ดูเหมือนว่าจะได้รับความนิยมอย่างมากในช่วงไม่กี่ปีที่ผ่านมา โดยเฉพาะในชุมชน Python และการเปิดตัว Python 3.4 ในเดือนมีนาคม 2014 ดังนั้นจึงค่อนข้างยากที่จะทำให้ตัวเองทันสมัยอยู่เสมอ กับแพ็คเกจสุดว้าว ค้นหาแพ็คเกจ เจ๋งๆ เหล่านี้ได้ที่นี่ และหากคุณขาดแพ็คเกจใดไป เราไว้วางใจให้คุณสร้างปัญหาหรือดึงคำขอตามคำแนะนำของคุณ
สารบัญ
- กรอบงานเว็บ
- คิวข้อความ
- ไดรเวอร์ฐานข้อมูล
- เครือข่าย
- GraphQL
- การทดสอบ
- ลูปทางเลือก
- เบ็ดเตล็ด
- งานเขียน
- พูดคุย
- ทางเลือกอื่นสำหรับ asyncio
กรอบงานเว็บ
ไลบรารี่สำหรับสร้างเว็บแอปพลิเคชัน
- FastAPI - เฟรมเวิร์ก Python 3.6+ API ประสิทธิภาพสูงมากตามคำแนะนำประเภท ขับเคลื่อนโดย Starlette และ Pydantic
- Django - เว็บเฟรมเวิร์ก Python ระดับสูงที่จัดตั้งขึ้นพร้อมชุมชนและระบบนิเวศขนาดใหญ่
- Starlette - เฟรมเวิร์ก/ชุดเครื่องมือ ASGI น้ำหนักเบาสำหรับการสร้างบริการที่มีประสิทธิภาพสูง
- aiohttp - ไคลเอนต์ / เซิร์ฟเวอร์ Http สำหรับ asyncio (PEP-3156)
- sanic - เว็บเซิร์ฟเวอร์ Python 3.5+ ที่เขียนขึ้นเพื่อให้ทำงานได้อย่างรวดเร็ว
- Quart - ไมโครเฟรมเว็บแบบ asyncio ที่มี API เดียวกันกับ Flask
- autobahn - WebSocket และ WAMP รองรับ asyncio และ Twisted สำหรับไคลเอนต์และเซิร์ฟเวอร์
- websockets - ไลบรารีสำหรับสร้างเซิร์ฟเวอร์และไคลเอนต์ WebSocket ใน Python โดยเน้นที่ความถูกต้องและความเรียบง่าย
- ทอร์นาโด - กรอบงานเว็บที่มีประสิทธิภาพและไลบรารีเครือข่ายแบบอะซิงโครนัส
- uvicorn - เซิร์ฟเวอร์ ASGI ที่รวดเร็วปานสายฟ้า
คิวข้อความ
ไลบรารีสำหรับใช้งานแอปพลิเคชันโดยใช้คิวข้อความ
- aioamqp - การใช้งาน AMQP โดยใช้ asyncio
- pyzmq - การผูก Python สำหรับ ZeroMQ
- aozmq - การรวม Asyncio ทางเลือกกับ ZeroMQ
- crossbar - Crossbar.io เป็นแพลตฟอร์มเครือข่ายสำหรับแอปพลิเคชันแบบกระจายและไมโครเซอร์วิส
- asyncio-nats - ไคลเอนต์สำหรับระบบส่งข้อความ NATS
- aiokafka - ไคลเอนต์สำหรับ Apache Kafka
ไดรเวอร์ฐานข้อมูล
ไลบรารีเพื่อเชื่อมต่อกับฐานข้อมูล
- asyncpg - ไลบรารีไคลเอนต์ฐานข้อมูล PostgreSQL ที่รวดเร็วสำหรับ Python/asyncio
- asyncpgsa - Asyncpg พร้อมการสนับสนุนคอร์ sqlalchemy
- aiopg - ไลบรารีสำหรับการเข้าถึงฐานข้อมูล PostgreSQL
- aiomysql - ไลบรารีสำหรับการเข้าถึงฐานข้อมูล MySQL
- aioodbc - ไลบรารีสำหรับการเข้าถึงฐานข้อมูล ODBC
- motor - ไดรเวอร์ async Python สำหรับ MongoDB
- redis-py - ไคลเอนต์ Redis Python (ซึ่งรวมถึง aioreadis ทันที)
- aiocouchdb - ไคลเอนต์ CouchDB ที่สร้างขึ้นบน aiohttp (asyncio)
- aioinflux - ไคลเอนต์ InfluxDB ที่สร้างขึ้นบน aiohttp
- aioes - ไดรเวอร์ที่เข้ากันได้กับ Asyncio สำหรับ elasticsearch
- peewee-async - การใช้งาน ORM ตาม peewee และ aiopg
- GINO - เป็น Python ORM แบบอะซิงโครนัสน้ำหนักเบาที่ใช้คอร์ SQLAlchemy พร้อมด้วยภาษา asyncpg
- Tortoise ORM - ORM หลายแบ็กเอนด์ดั้งเดิมพร้อม API ที่เหมือน Django และการจัดการความสัมพันธ์ที่ง่ายดาย
- ฐานข้อมูล - การเข้าถึงฐานข้อมูล Async สำหรับคอร์ SQLAlchemy พร้อมรองรับ PostgreSQL, MySQL และ SQLite
- Prisma Client Python - ORM แบบปลอดภัยที่สร้างขึ้นอัตโนมัติโดยสมบูรณ์ ขับเคลื่อนโดย Pydantic และปรับแต่งมาสำหรับสคีมาของคุณโดยเฉพาะ - รองรับ SQLite, PostgreSQL, MySQL, MongoDB, MariaDB และอื่นๆ อีกมากมาย
- Piccolo - เครื่องมือสร้าง ORM / แบบสอบถามซึ่งสามารถทำงานได้ในโหมดอะซิงก์และซิงค์พร้อม GUI ผู้ดูแลระบบที่ดีและมิดเดิลแวร์ ASGI
- Beanie - async MongoDB ODM ที่สร้างขึ้นบนมอเตอร์และ Pydantic
เครือข่าย
ห้องสมุดเพื่อสื่อสารในเครือข่ายของคุณ
- AsyncSSH - จัดเตรียมการใช้งานไคลเอ็นต์และเซิร์ฟเวอร์แบบอะซิงโครนัสของโปรโตคอล SSHv2
- aiodns - ตัวแก้ไข DNS อย่างง่ายสำหรับ asyncio
- aioping - การใช้โปรโตคอล ICMP (ping) แบบ asyncio อย่างรวดเร็ว
- httpx - ไคลเอนต์ HTTP แบบอะซิงโครนัสสำหรับ Python 3 พร้อมคำขอ API ที่เข้ากันได้
GraphQL
ไลบรารีสำหรับสร้างเซิร์ฟเวอร์ GraphQL
- Ariadne - ไลบรารี Python แรกของ Schema สำหรับการใช้งานเซิร์ฟเวอร์ GraphQL
- Tartiflette - เอ็นจิ้น Python 3.6+ GraphQL รุ่นแรกที่สร้างขึ้นบน
libgraphqlparser
- Strawberry - เซิร์ฟเวอร์ Python 3 GraphQL ที่ใช้โค้ดตัวแรกพร้อมรองรับ Django, Flask และ FastAPI/Starlette
การทดสอบ
ไลบรารีเพื่อทดสอบแอปพลิเคชันที่ใช้อะซินซิโอ
- aiomock - ไลบรารีจำลอง Python ที่รองรับวิธี async
- asynctest - ปรับปรุงแพ็คเกจ unittest มาตรฐานพร้อมคุณสมบัติสำหรับการทดสอบ ไลบรารีอะซินซิโอ
- pytest-asyncio - รองรับ Pytest สำหรับ asyncio
- ความรับผิดชอบ - การเยาะเย้ย Asyncio http คล้ายกับไลบรารีคำตอบที่ใช้สำหรับการร้องขอ
- aioresponses - ตัวช่วยสำหรับการร้องขอเว็บจำลอง / ปลอมในแพ็คเกจ Python aiohttp
ลูปทางเลือก
การใช้งานลูป asyncio ทางเลือก
- uvloop - การใช้งาน asyncio event loop ที่รวดเร็วเป็นพิเศษที่ด้านบนของ libuv
เบ็ดเตล็ด
ไลบรารี asyncio ที่ยอดเยี่ยมอื่น ๆ
- aiochan - การทำงานพร้อมกันแบบ CSP พร้อมช่องสัญญาณ การเลือกและการประมวลผลหลายตัวนอกเหนือจาก asyncio
- aiocache - ตัวจัดการแคชสำหรับแบ็กเอนด์ที่แตกต่างกัน
- aiofiles - รองรับไฟล์สำหรับ asyncio
- aiopath -
pathlib
แบบอะซิงโครนัสสำหรับ asyncio - aiodebug - ไลบรารี่ขนาดเล็กสำหรับตรวจสอบและทดสอบโปรแกรมอะซินซิโอ
- aiorun - ฟังก์ชัน
run()
ที่จัดการรูปแบบปกติทั้งหมดสำหรับการเริ่มต้นและการปิดระบบอย่างค่อยเป็นค่อยไป - aiosc - การใช้งานการควบคุมเสียงแบบเปิดแบบน้ำหนักเบา
- aioserial - การแทนที่ pySerial แบบดรอปอิน
- aiozipkin - เครื่องมือติดตามแบบกระจายสำหรับ asyncio ด้วย zipkin
- asgiref - ยูทิลิตีแบ็กเอนด์สำหรับการรวม ASGI กับ WSGI รวมถึงตัวห่อฟังก์ชัน sync_to_async และ async_to_sync
- async_property - เครื่องมือตกแต่ง Python สำหรับคุณสมบัติ async
- ruia - เว็บ async ที่ขูดไมโครเฟรมเวิร์กโดยอิงจาก asyncio
- kubernetes_asyncio - ไลบรารีไคลเอ็นต์แบบอะซิงโครนัสสำหรับ Kubernetes
- aiomisc - เครื่องมือเบ็ดเตล็ดสำหรับ
asyncio
- Taskiq - ตัวจัดการงานแบบกระจายแบบอะซิงโครนัส (เช่นคื่นฉ่าย แต่เป็นอะซิงโครนัส)
งานเขียน
เอกสาร โพสต์ในบล็อก และงานเขียนที่ยอดเยี่ยมอื่นๆ เกี่ยวกับ Asyncio
- เอกสารประกอบ asyncio อย่างเป็นทางการ - Asynchronous I/O, event loop, coroutines และงาน
- คำนำสั้นๆ ที่เขียนอย่างดีเกี่ยวกับ asyncio - Generators, Coroutines, Native Coroutines และ async/await
- AsyncIO สำหรับ Working Python Developer - การแนะนำเบื้องต้นเกี่ยวกับการเขียนโปรแกรมแบบอะซิงโครนัสตั้งแต่ตัวอย่างพื้นฐานจนถึงการดึง URL
- ขีดจำกัดการทดสอบของ Python aiohttp - สร้างคำขอ 1 ล้านครั้งด้วย python-aiohttp
- ASGI (อินเทอร์เฟซเกตเวย์เซิร์ฟเวอร์แบบอะซิงโครนัส) - ผู้สืบทอดทางจิตวิญญาณของ WSGI มีจุดมุ่งหมายเพื่อให้อินเทอร์เฟซมาตรฐานระหว่างเว็บเซิร์ฟเวอร์ เฟรมเวิร์ก และแอปพลิเคชัน Python ที่รองรับ async
- หลักการแรกเบื้องต้นเกี่ยวกับ Asyncio - หลักการแรกที่ไม่มีคำศัพท์เบื้องต้นเกี่ยวกับการทำงานภายในของ Asyncio
- การพัฒนาและทดสอบ Asynchronous API ด้วย FastAPI และ Pytest - บทช่วยสอนนี้จะกล่าวถึงวิธีการพัฒนาและทดสอบ API แบบอะซิงโครนัสด้วย FastAPI โดยใช้ Test-Driven Development (TDD)
- Python Concurrency with asyncio - เรียนรู้วิธีเร่งความเร็วโค้ด Python ที่ช้าด้วยการเขียนโปรแกรมพร้อมกันและไลบรารี asyncio ที่ล้ำสมัย
พูดคุย
บันทึกการพูดคุยที่ยอดเยี่ยมเกี่ยวกับ Asyncio
- หัวข้อที่น่าสนใจ (Python Asyncio) | แคสต์หน้าจอ | สไลด์ - คำปราศรัยของ PyCon Brasil 2015 (David Beazley)
- บทสรุป Python Asynchronous I/O - บทสรุปโค้ด 8 ส่วน (Philip Guo)
- Async/รอใน Python 3.5 และทำไมมันถึงยอดเยี่ยม - EuroPython 2016 (Yury Selivanov)
- ความกลัวและการรอคอยใน Async: การเดินทางอันป่าเถื่อนสู่หัวใจแห่งความฝัน Coroutine | screencast - คำปราศรัยของ PyOhio 2016 (David Beazley)
- Asynchronous Python สำหรับผู้เริ่มต้นที่สมบูรณ์ | สไลด์ - PyCon 2017 (Miguel Grinberg)
- ไขปริศนา Async และ Await Keywords ของ Python - JetBrains TV 2020 (Michael Kennedy)
ทางเลือกอื่นสำหรับ asyncio
แนวทางอื่นในการเขียนโปรแกรม async ใน Python ซึ่งบางวิธีพยายามรองรับความเข้ากันได้กับ asyncio
แต่บางวิธีก็เข้ากันไม่ได้เลย
- curio - ไลบรารีการทำงานพร้อมกันของ Coroutine
- สะพาน Curio-Asyncio - พื้นฐาน Curio -> สะพาน Asyncio Coroutine
- trio - Pythonic async I/O สำหรับมนุษย์และชาวงู
- trio-asyncio - การใช้งาน asyncio mainloop อีกครั้งที่ด้านบนของ Trio
- AnyIO - การทำงานพร้อมกันแบบอะซิงโครนัสระดับสูงและเฟรมเวิร์กเครือข่ายที่ทำงานบนทรีโอหรืออะซินซิโอ