Importation does not equate to execution. I.e. since I could have multiple event loops running at once that means what's in sys.modules can't tell me what event loop I'm currently interacting with.
On Fri, 17 Aug 2018 at 09:09 Alex Grönholm <alex.gronh...@nextday.fi> wrote: > 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 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 > > > > _______________________________________________ > 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/ >
_______________________________________________ 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/