Split sync and async HTTPX handlers #965
Open
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.
In #943 (comment), sending sync requests in async contexts was accidentally broken. As #957 and #958 correctly point out, this is because the future's result was not awaited.
Instead of creating a separate event loop as #957 and #958 do, I have opted to properly separate the sync and async HTTPX handlers, as the only reason async functions were being run in a sync context was to reuse the functions.
To do this, I have pushed the logic to convert the byte stream (which is the only truly async function) up into the respective sync/async handlers, which allows the other functions to be sync (and thus callable from the respective handlers without additional work).
I have also added a test for this regression and removed the extraneous
pytest.mark.onlinemarkers.