[Async-sig] new library: sniffio – Sniff out which async library your code is running under

Chris Jerdonek chris.jerdonek at gmail.com
Fri Aug 17 15:12:07 EDT 2018


If I'm reading the docs correctly, it looks like an async library has
to depend on sniffio in order to be detected by sniffio:
https://sniffio.readthedocs.io/en/latest/#adding-support-to-a-new-async-library

Did you also think about whether it would be possible for a library to
advertise itself without having to depend on a third-party library
(e.g. using some sort of convention)? That would permit a less
"centralized" approach.

--Chris



On Thu, Aug 16, 2018 at 12:01 AM, Nathaniel Smith <njs at pobox.com> wrote:
> Hi all,
>
> A number of people are working on packages that support multiple async
> backends (e.g., asyncio + trio, or trio + curio, or trio + twisted,
> ...). So then the question arises... how can I figure out which async
> library my user is actually using?
>
> Answer: install sniffio, and then call
> sniffio.current_async_library(), and it tells you.
>
> Well, right now it only works for trio and asyncio, but if you
> maintain an async library and you want to make it easier for packages
> to detect you, then it's easy to add support – see the manual. We
> considered various clever things, but ultimately decided that the best
> approach was to use a ContextVar and make it the coroutine runner's
> responsibility to advertise which async flavor it uses. In particular,
> this approach works even for hybrid programs that are using multiple
> coroutine runners in the same loop, like a Twisted program with
> asyncio-flavored and twisted-flavored coroutines in the same thread,
> or a Trio program using trio-asyncio to run both asyncio-flavored and
> trio-flavored coroutines in the same thread.
>
> Github: https://github.com/python-trio/sniffio
> Manual: https://sniffio.readthedocs.io/
> PyPI: https://pypi.org/p/sniffio
>
> -n
>
> --
> Nathaniel J. Smith -- https://vorpus.org
> _______________________________________________
> Async-sig mailing list
> Async-sig at python.org
> https://mail.python.org/mailman/listinfo/async-sig
> Code of Conduct: https://www.python.org/psf/codeofconduct/


More information about the Async-sig mailing list