Mark http_exception as async to prevent thread creation.#2922
Merged
adriangb merged 1 commit intoKludex:masterfrom Apr 16, 2025
Merged
Conversation
bdd5b6b to
117ec49
Compare
…eation. In https://github.com/encode/starlette/blob/master/starlette/_exception_handler.py#L61 we check if the exception_handler is an async function and if not we execute it in a different thread. This is meant to ensure that long-running sync IO operations don't block the main async eventloop. However, in the case of http_exception, a simple function that does not do any io at all the aforementioned logic spawns a thread to run the function. Marking this function async is a simple way of making sure this function does not accidently cause a thread to be created.
117ec49 to
d17b116
Compare
Kludex
approved these changes
Apr 14, 2025
Owner
Kludex
left a comment
There was a problem hiding this comment.
Thanks :)
I'm not sure how no one saw this...
Contributor
Author
|
@Kludex no worries 😄 |
Contributor
Author
|
@Kludex bumping this, would appreciate some help hitting the merge button 😄 |
Repository owner
locked as spam and limited conversation to collaborators
Apr 16, 2025
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
In https://github.com/encode/starlette/blob/master/starlette/_exception_handler.py#L61 we check if the exception_handler is an async function and if not we execute it in a different thread.
This is meant to ensure that long-running sync IO operations don't block the main async eventloop.
However, in the case of http_exception, a simple function that does not do any io at all - the aforementioned logic spawns a thread to run the function.
Marking this function async is a simple way of making sure this function does not accidently cause a thread to be created.
Checklist