如何为asyncio任务设置名称?

问题描述:

我们有一种方法来设置线程名称:thread = threading.Thread(name='Very important thread', target=foo),之后在格式化程序中使用%(thread)s:获取该名称以进行日志记录。 是否有可能通过asyncio.Task这样做?如何为asyncio任务设置名称?

您可以通过访问当前的任务:

asyncio.Task.current_task() 

和任何其他Python对象,你可以将某些属性动态添加到Task。例如,将它添加到您的任何协同程序是开始一个新的任务的第一行:

asyncio.Task.current_task().foo = "Bar" 
asyncio.Task.current_task().name = "#{}".format(n) 

添加logging filter输出这些数据与您记录。

+0

太棒了!我从未想过:“为什么我们需要这些过滤器?” :) –