Allow requests module as QnAMaker's HTTP client #1369 8000 span>
Merged
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.
Fixes #1187
Description
Properly allow requests to be made and consumed using Python's built-in
requests
library.This will allow the option to use an HTTP client that isn't from
aiohttp
, which may be a sought out option for frameworks that don't wrap their requests in a running "ProactorEventLoop
" that's necessary foraiohttp.ClientSession
's to work.For example, using the Quart 13.core-bot sample, it can properly call
QnAMaker
service with just the followingapp.py
Specific Changes
QnAMaker
to the proper shape for the given HTTP client, whether it beaiohttp
orrequests
-based ingenerate_answer_utils.py
andhttp_request_utils.py
HttpRequestUtils.execute_http_request
method return type goes fromaiohttp.ClientResponse
->Any
, given that different clients can be passed in to make requests, which return different shapesQnAMaker._http_client
type fromaiohttp.ClientSession
toAny
Any
" type with the requirement that it needs to have apost
method, however I'm not sure if this is necessary or not, given that most do (but who knows!)