如何为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输出这些数据与您记录。
太棒了!我从未想过:“为什么我们需要这些过滤器?” :) –