如何在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

上一个答案:

你可能想看看tasklocalsaiolocals

另一答案

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

另一答案

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

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

以上是关于如何在Python 3.5中的异步方法调用之间传递上下文?的主要内容,如果未能解决你的问题,请参考以下文章

.Net 3.5,在进程之间传递字符串的最安全方式

Python 3.5 中的异步HTTP请求写法

在 Python 3.5+ 中将格式字符串作为关键字参数传递的替代方法

如何向Webservice里传递类参数

如何在 Python 中的多个异步进程之间进行同步?

如何在Angular 8中未调用的组件之间传递数据[重复]