Make sure to not call sync IO functions inside async functions #615
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.
I found that several sync IO functions are used inside of
async
functions. This is not good, as sync IO may block the eventloop for undetermined amount of time.I had to add a new
_a_token_info
that mimics_token_info
; the only difference is that it calls the async alternatives inside.I think those should be all the places where a sync IO was made.
I also found another discrepancy between
requests
andhttpx
-httpx
does not handleset
s for form-data requests.Encoding in requests vs httpx. httpx doesn't mention anything about support or lack of it for sets. Perhaps it could be reasonable for it to be fixed upstream.
Luckily some tests for
a_uma_permissions
caught this.For now I fixed the problem inside the function itself.
The only other place I see where this could need a similar fix is
KeycloakOpenID.a_token
, which takes a user-supplied dict (theextra
) and passes it as is tohttpx
.