【问题标题】:Detecting current async library检测当前的异步库
【发布时间】:2020-01-05 19:57:34
【问题描述】:

我正在编写一些异步库,并决定同时支持 asynciotrio 并发库来运行它。无论选择哪个库,我都有一些代码试图变得聪明并做正确的事情。

如何检测其中哪一个用于运行我的代码?可以两者兼得吗?

【问题讨论】:

    标签: python async-await python-asyncio python-trio


    【解决方案1】:

    您需要 sniffio 库,它是专门为解决此问题而创建的:https://github.com/python-trio/sniffio

    这是文档中的示例:

    from sniffio import current_async_library
    import trio
    import asyncio
    
    async def print_library():
        library = current_async_library()
        print("This is:", library)
    
    # Prints "This is trio"
    trio.run(print_library)
    
    # Prints "This is asyncio"
    asyncio.run(print_library())
    

    它目前支持 trio、asyncio、curio,并与 trio-asyncio 集成,因此如果您有一个混合程序使用 trio-asyncio 在 trio 和 asyncio 模式之间来回切换,它会为每个返回正确的值模式。它还可以扩展以支持新库 - 请参阅文档。

    【讨论】:

      猜你喜欢
      • 2016-02-02
      • 1970-01-01
      • 1970-01-01
      • 2013-07-13
      • 1970-01-01
      • 1970-01-01
      • 2023-01-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多