굉장한 비동기
멋진 Python asyncio 프레임워크, 라이브러리, 소프트웨어 및 리소스를 신중하게 선별한 목록입니다.
Python 3.4와 함께 표준 라이브러리에 도입된 Python asyncio 모듈은 코루틴을 사용하여 단일 스레드 동시 코드 작성, 소켓 및 기타 리소스를 통한 I/O 액세스 다중화, 네트워크 클라이언트 및 서버 실행, 기타 관련 기본 요소를 위한 인프라를 제공합니다.
Asyncio는 실제로 새로운 기술은 아니지만 몇 년 전부터 매우 인기가 있는 것으로 보입니다. 특히 Python 커뮤니티와 2014년 3월 Python 3.4 출시와 함께 더욱 그렇습니다. 따라서 최신 상태를 유지하는 것은 꽤 어렵습니다. 가장 멋진 패키지가 있습니다. 여기에서 멋진 패키지 중 일부를 찾아보세요. 패키지가 누락된 경우 제안 사항이 포함된 이슈 또는 끌어오기 요청을 작성해 주시기 바랍니다.
내용물
- 웹 프레임워크
- 메시지 대기열
- 데이터베이스 드라이버
- 네트워킹
- GraphQL
- 테스트
- 대체 루프
- 기타
- 저
- 회담
- asyncio의 대안
웹 프레임워크
웹 애플리케이션을 구축하기 위한 라이브러리.
- FastAPI - 유형 힌트를 기반으로 하는 매우 고성능 Python 3.6+ API 프레임워크입니다. Starlette와 Pydantic이 제공합니다.
- Django - 거대한 커뮤니티와 생태계를 갖춘 확립된 고급 Python 웹 프레임워크입니다.
- Starlette - 고성능 서비스 구축을 위한 경량 ASGI 프레임워크/툴킷입니다.
- aiohttp - asyncio용 HTTP 클라이언트/서버(PEP-3156).
- sanic - 빠르게 작동하도록 작성된 Python 3.5+ 웹 서버입니다.
- Quart - Flask와 동일한 API를 사용하는 asyncio 웹 마이크로프레임워크입니다.
- autobahn - 클라이언트와 서버에 대해 asyncio 및 Twisted를 지원하는 WebSocket 및 WAMP입니다.
- websockets - 정확성과 단순성에 중점을 두고 Python으로 WebSocket 서버와 클라이언트를 구축하기 위한 라이브러리입니다.
- Tornado - 고성능 웹 프레임워크 및 비동기 네트워킹 라이브러리.
- uvicorn - 초고속 ASGI 서버입니다.
메시지 대기열
메시지 대기열을 사용하여 애플리케이션을 구현하는 라이브러리입니다.
- aioamqp - asyncio를 사용한 AMQP 구현입니다.
- pyzmq - ZeroMQ용 Python 바인딩.
- aiozmq - ZeroMQ와의 대체 Asyncio 통합.
- crossbar - Crossbar.io는 분산 및 마이크로서비스 애플리케이션을 위한 네트워킹 플랫폼입니다.
- asyncio-nats - NATS 메시징 시스템용 클라이언트입니다.
- aiokafka - Apache Kafka용 클라이언트.
데이터베이스 드라이버
데이터베이스에 연결하기 위한 라이브러리입니다.
- asyncpg - Python/asyncio용 빠른 PostgreSQL 데이터베이스 클라이언트 라이브러리.
- asyncpgsa - sqlalchemy 코어를 지원하는 Asyncpg입니다.
- aiopg - PostgreSQL 데이터베이스에 액세스하기 위한 라이브러리입니다.
- aiomysql - MySQL 데이터베이스에 액세스하기 위한 라이브러리
- aioodbc - ODBC 데이터베이스에 액세스하기 위한 라이브러리입니다.
- 모터 - MongoDB용 비동기 Python 드라이버입니다.
- redis-py - Redis Python 클라이언트(현재 aioreadis 포함)
- aiocouchdb - aiohttp(asyncio) 위에 구축된 CouchDB 클라이언트입니다.
- aioinflux - aiohttp 위에 구축된 InfluxDB 클라이언트입니다.
- aioes - Elasticsearch용 Asyncio 호환 드라이버입니다.
- peewee-async - peewee 및 aiopg를 기반으로 한 ORM 구현입니다.
- GINO - asyncpg 방언을 사용하는 SQLAlchemy 코어를 기반으로 하는 경량 비동기 Python ORM입니다.
- Tortoise ORM - Django와 유사한 API와 쉬운 관계 관리를 갖춘 기본 멀티 백엔드 ORM입니다.
- 데이터베이스 - PostgreSQL, MySQL 및 SQLite를 지원하는 SQLAlchemy 코어에 대한 비동기 데이터베이스 액세스입니다.
- Prisma Client Python - Pydantic에서 제공하고 스키마에 맞게 특별히 맞춤화된 자동 생성되고 완전히 유형이 안전한 ORM으로 SQLite, PostgreSQL, MySQL, MongoDB, MariaDB 등을 지원합니다.
- Piccolo - 멋진 관리 GUI 및 ASGI 미들웨어를 사용하여 비동기 및 동기화 모드에서 작동할 수 있는 ORM/쿼리 빌더입니다.
- Beanie - 모터와 Pydantic을 기반으로 구축된 비동기 MongoDB ODM입니다.
네트워킹
네트워크에서 통신하기 위한 라이브러리입니다.
- AsyncSSH - SSHv2 프로토콜의 비동기 클라이언트 및 서버 구현을 제공합니다.
- aiodns - asyncio를 위한 간단한 DNS 확인자입니다.
- aioping - ICMP(ping) 프로토콜의 빠른 asyncio 구현입니다.
- httpx - 요청 호환 API가 있는 Python 3용 비동기 HTTP 클라이언트입니다.
GraphQL
GraphQL 서버를 구축하기 위한 라이브러리입니다.
- Ariadne - GraphQL 서버 구현을 위한 스키마 우선 Python 라이브러리입니다.
- Tartiflette -
libgraphqlparser
위에 구축된 스키마 우선 Python 3.6+ GraphQL 엔진입니다. - Strawberry - Django, Flask 및 FastAPI/Starlette를 지원하는 코드 우선 Python 3 GraphQL 서버입니다.
테스트
asyncio 기반 애플리케이션을 테스트하기 위한 라이브러리입니다.
- aiomock - 비동기 메서드를 지원하는 Python 모의 라이브러리입니다.
- asynctest - 테스트 기능을 사용하여 표준 단위 테스트 패키지를 향상합니다. 비동기 라이브러리
- pytest-asyncio - asyncio에 대한 Pytest 지원.
- aresponses - Asyncio http 조롱. 요청에 사용되는 응답 라이브러리와 유사합니다.
- aioresponses - Python aiohttp 패키지의 모의/가짜 웹 요청을 위한 도우미입니다.
대체 루프
대체 asyncio 루프 구현.
- uvloop - libuv 위에 asyncio 이벤트 루프를 매우 빠르게 구현합니다.
기타
다른 멋진 asyncio 라이브러리.
- aiochan - asyncio 위에 채널, 선택 및 다중 처리를 갖춘 CSP 스타일 동시성입니다.
- aiocache - 다양한 백엔드를 위한 캐시 관리자입니다.
- aiofiles - asyncio에 대한 파일 지원.
- aiopath - asyncio용 비동기
pathlib
. - aiodebug - asyncio 프로그램을 모니터링하고 테스트하기 위한 작은 라이브러리입니다.
- aiorun - 시작 및 정상적인 종료를 위한 모든 일반적인 상용구를 처리하는
run()
함수입니다. - aiosc - 경량 개방형 사운드 제어 구현.
- aioserial - pySerial을 즉시 대체합니다.
- aiozipkin - zipkin을 사용한 asyncio용 분산 추적 계측
- asgiref - ASGI에서 WSGI로의 통합을 위한 백엔드 유틸리티로, sync_to_async 및 async_to_sync 함수 래퍼를 포함합니다.
- async_property - 비동기 속성을 위한 Python 데코레이터입니다.
- ruia - asyncio를 기반으로 한 비동기 웹 스크래핑 마이크로 프레임워크입니다.
- kubernetes_asyncio - Kubernetes용 비동기 클라이언트 라이브러리입니다.
- aiomisc -
asyncio
용 기타 유틸리티. - taskiq - 비동기식 분산 작업 관리자(셀러리와 비슷하지만 비동기식).
저
asyncio에 관한 문서, 블로그 게시물 및 기타 멋진 글입니다.
- 공식 asyncio 문서 - 비동기 I/O, 이벤트 루프, 코루틴 및 작업.
- asyncio에 대한 짧고 잘 작성된 소개 - 제너레이터, 코루틴, 네이티브 코루틴 및 async/await.
- 현직 Python 개발자를 위한 AsyncIO - 기본 예제부터 URL 가져오기까지 비동기 프로그래밍을 부드럽게 소개합니다.
- Python aiohttp의 테스트 한계 - python-aiohttp로 100만 개의 요청 만들기.
- ASGI(Asynchronous Server Gateway Interface) - 비동기 가능 Python 웹 서버, 프레임워크 및 애플리케이션 간의 표준 인터페이스를 제공하기 위한 WSGI의 정신적 후속 버전입니다.
- Asyncio의 첫 번째 원칙 소개 - 전문 용어가 필요 없는 Asyncio의 내부 작동에 대한 첫 번째 원칙을 소개합니다.
- FastAPI 및 Pytest를 사용하여 비동기 API 개발 및 테스트 - 이 튜토리얼에서는 TDD(테스트 기반 개발)를 사용하여 FastAPI를 사용하여 비동기 API를 개발하고 테스트하는 방법을 살펴봅니다.
- asyncio를 사용한 Python 동시성 - 동시 프로그래밍 및 최첨단 asyncio 라이브러리를 사용하여 느린 Python 코드 속도를 높이는 방법을 알아보세요.
회담
asyncio에 관한 멋진 이야기를 녹음했습니다.
- 관심 주제(Python Asyncio) | 스크린캐스트 | 슬라이드 - PyCon Brasil 2015 기조연설(David Beazley).
- Python 비동기 I/O 연습 - 8부분으로 구성된 코드 연습(Philip Guo).
- Python 3.5의 Async/await와 이것이 멋진 이유 - EuroPython 2016(Yury Selivanov)
- 비동기의 두려움과 기다림: 코루틴 꿈의 중심을 향한 야만적인 여정 | 스크린캐스트 - PyOhio 2016 기조연설(David Beazley).
- 완전 초보자를 위한 비동기 Python | 슬라이드 - PyCon 2017(Miguel Grinberg).
- Python의 Async 및 Await 키워드 이해하기 - JetBrains TV 2020(Michael Kennedy)
asyncio의 대안
Python의 비동기 프로그래밍에 대한 대체 접근 방식 중 일부는 asyncio
와의 일부 호환성을 지원하려고 시도하고 다른 일부는 전혀 호환되지 않습니다.
- curio - 코루틴 동시성 라이브러리입니다.
- Curio-Asyncio 브리지 - 기본 큐리오 -> asyncio 코루틴 브리지.
- trio - 인간과 뱀 인간을 위한 Python 방식의 비동기 I/O입니다.
- trio-asyncio - Trio 위에 asyncio 메인루프를 다시 구현합니다.
- AnyIO - trio 또는 asyncio 위에서 작동하는 높은 수준의 비동기 동시성 및 네트워킹 프레임워크입니다.