如何在Python 3.5中的异步方法调用之间传递上下文?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Python 3.5中的异步方法调用之间传递上下文?相关的知识,希望对你有一定的参考价值。
如何将异步方法调用的上下文传递给另一个 - 不使用方法参数?
我需要该功能来使用一种流ID来丰富日志消息,以便我可以轻松跟踪特定调用方法流的所有日志消息。
我使用Python的async和await关键字(Python 3.5.x)。
答案
你应该使用Python 3.7中引入的Context Variables,并且我有一个Python <3.7的polyfill作为aiocontextvars。
上一个答案:
你可能想看看tasklocals和aiolocals。
另一答案
我通过设置自定义task factory解决了这个问题。事实证明,每个任务的上下文(与每个异步调用的上下文相比)对我来说已经足够了。
另一答案
我正在研究aiotask-context package。这是在任务之间传递上下文的一种非常简单的方法(使用await
或yield from
调用)。如果您不想使用该包,您仍然可以使用这个想法:)。
我正在研究如何为ensure_future
调用传播它。
以上是关于如何在Python 3.5中的异步方法调用之间传递上下文?的主要内容,如果未能解决你的问题,请参考以下文章