Using async and await
async/await support is currently being integrated in PyO3. See the dedicated documentation
If you are working with a Python library that makes use of async functions or wish to provide
Python bindings for an async Rust library, pyo3-async-runtimes
likely has the tools you need. It provides conversions between async functions in both Python and
Rust and was designed with first-class support for popular Rust runtimes such as
tokio and async-std. In addition, all async Python
code runs on the default asyncio event loop, so pyo3-async-runtimes should work just fine with existing
Python libraries.
Additional Information
- Managing event loop references can be tricky with pyo3-async-runtimes. See Event Loop References in the API docs to get a better intuition for how event loop references are managed in this library.
- Testing pyo3-async-runtimeslibraries and applications requires a custom test harness since Python requires control over the main thread. You can find a testing guide in the API docs for thetestingmodule