This was my approach:
def _detect_running_asynclib() -> str:
    if 'trio' in sys.modules:
        from trio.hazmat import current_trio_token
        try:
            current_trio_token()
        except RuntimeError:
            pass
        else:
            return 'trio'

    if 'curio' in sys.modules:
        from curio.meta import curio_running
        if curio_running():
            return 'curio'

    if 'asyncio' in sys.modules:
        from .backends.asyncio import get_running_loop
        if get_running_loop() is not None:
            return 'asyncio'

    raise LookupError('Cannot find any running async event loop')
Is there something wrong with this?
to, 2018-08-16 kello 00:01 -0700, Nathaniel Smith kirjoitti:
> Hi all,
> A number of people are working on packages that support multiple
> asyncbackends (e.g., asyncio + trio, or trio + curio, or trio +
> twisted,...). So then the question arises... how can I figure out
> which asynclibrary my user is actually using?
> Answer: install sniffio, and then
> callsniffio.current_async_library(), and it tells you.
> Well, right now it only works for trio and asyncio, but if
> youmaintain an async library and you want to make it easier for
> packagesto detect you, then it's easy to add support – see the
> manual. Weconsidered various clever things, but ultimately decided
> that the bestapproach was to use a ContextVar and make it the
> coroutine runner'sresponsibility to advertise which async flavor it
> uses. In particular,this approach works even for hybrid programs that
> are using multiplecoroutine runners in the same loop, like a Twisted
> program withasyncio-flavored and twisted-flavored coroutines in the
> same thread,or a Trio program using trio-asyncio to run both asyncio-
> flavored andtrio-flavored coroutines in the same thread.
> Github: https://github.com/python-trio/sniffioManual: 
> https://sniffio.readthedocs.io/PyPI: https://pypi.org/p/sniffio
> -n
> 
_______________________________________________
Async-sig mailing list
Async-sig@python.org
https://mail.python.org/mailman/listinfo/async-sig
Code of Conduct: https://www.python.org/psf/codeofconduct/

Reply via email to