Allow requests module as QnAMaker's HTTP client #1369
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
requestslibrary.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
QnAMakerservice with just the followingapp.py
Specific Changes
QnAMakerto the proper shape for the given HTTP client, whether it beaiohttporrequests-based ingenerate_answer_utils.pyandhttp_request_utils.pyHttpRequestUtils.execute_http_requestmethod return type goes fromaiohttp.ClientResponse->Any, given that different clients can be passed in to make requests, which return different shapesQnAMaker._http_clienttype fromaiohttp.ClientSessiontoAnyAny" type with the requirement that it needs to have apostmethod, however I'm not sure if this is necessary or not, given that most do (but who knows!)