tornado
tornado copied to clipboard
Preserve contextvars context when handle httpclient response
Hello! We use contextvars and write some of them to JSON logs. Sometimes we see error logs Exception after Future was cancelled
. But from the log's context we couldn't find the place where it occured, only that it was related to tornado httpclient. After debugging, we noticed, that this log might be written with context of other tasks that also make HTTP requests. This PR is addressed to fix this issue.
I'm not sure if any tests are needed here, but I can try to add if you think they are.
Yes, this should have a test to make sure it doesn't get broken in the future. Something like ContextVarsTest in gen_test.py.
I'm a little surprised this is necessary - I had thought that the use of contextvars in the asyncio event loop covered what we needed. I wonder if there are any other callback-oriented interfaces we need to update in tornado.