2017-01-22 3 views
1

У нас есть способ установить имя потока: thread = threading.Thread(name='Very important thread', target=foo) и после этого получить это имя для ведения журнала с помощью %(thread)s: в форматировании. Можно ли сделать что-то подобное с помощью asyncio.Task?Как установить имя для задачи asyncio?

ответ

2

Вы можете получить доступ к текущей задачи с:

asyncio.Task.current_task() 

Как и любой другой объект питона, вы можете динамически добавлять некоторые свойства в Task. Например, добавьте в первую строку любого из ваших сопрограмм что начать новую задачу:

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

Добавить logging filter выводить эти данные с регистраторой.

+0

Отлично! Я даже не задумывался: «Почему нам нужны эти фильтры?» :) –

Смежные вопросы