如何在Python 3.5中的异步方法调用之间传递上下文?

问题描述 投票:2回答:3

如何将异步方法调用的上下文传递给另一个 - 不使用方法参数?

我需要该功能来使用一种流ID来丰富日志消息,以便我可以轻松跟踪特定调用方法流的所有日志消息。

我使用Python的async和await关键字(Python 3.5.x)。

async-await python-3.5 python-asyncio
3个回答
1
投票

你应该使用Python 3.7中引入的Context Variables,并且我有一个Python <3.7的polyfill作为aiocontextvars

上一个答案:

你可能想看看tasklocalsaiolocals


0
投票

我通过设置自定义task factory解决了这个问题。事实证明,每个任务的上下文(与每个异步调用的上下文相比)对我来说已经足够了。


0
投票

我正在研究aiotask-context package。这是在任务之间传递上下文的一种非常简单的方法(使用awaityield from调用)。如果您不想使用该包,您仍然可以使用这个想法:)。

我正在研究如何为ensure_future调用传播它。

© www.soinside.com 2019 - 2024. All rights reserved.