tornado icon indicating copy to clipboard operation
tornado copied to clipboard

Preserve contextvars context when handle httpclient response

Open tkukushkin opened this issue 1 year ago • 1 comments

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.

tkukushkin avatar Oct 19 '23 15:10 tkukushkin

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.

bdarnell avatar Jun 12 '24 14:06 bdarnell