- Notifications
You must be signed in to change notification settings - Fork147
High level asynchronous concurrency and networking framework that works on top of either trio or asyncio
License
agronholm/anyio
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
AnyIO is an asynchronous networking and concurrency library that works on top of eitherasyncio ortrio. It implements trio-likestructured concurrency (SC) on top of asyncio and works in harmonywith the native SC of trio itself.
Applications and libraries written against AnyIO's API will run unmodified on eitherasyncio ortrio. AnyIO can also be adopted into a library or application incrementally – bit by bit, no fullrefactoring necessary. It will blend in with the native libraries of your chosen backend.
View full documentation at:https://anyio.readthedocs.io/
AnyIO offers the following functionality:
- Task groups (nurseries in trio terminology)
- High-level networking (TCP, UDP and UNIX sockets)
- Happy eyeballs algorithm for TCP connections (more robust than that of asyncio on Python3.8)
- async/await style UDP sockets (unlike asyncio where you still have to use Transports andProtocols)
- A versatile API for byte streams and object streams
- Inter-task synchronization and communication (locks, conditions, events, semaphores, objectstreams)
- Worker threads
- Subprocesses
- Asynchronous file I/O (using worker threads)
- Signal handling
AnyIO also comes with its ownpytest plugin which also supports asynchronous fixtures.It even works with the popularHypothesis library.
About
High level asynchronous concurrency and networking framework that works on top of either trio or asyncio