Implement send_each and send_multicast
#692
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.
send_eachvssend_allsend_eachsends one HTTP request to V1 Send endpoint for each message in the list.send_allsends only one HTTP request to V1 Batch Send endpoint to send all messages in the array.send_eachuses concurrent.futures.ThreadPoolExecutor to run and wait for allrequestcalls to complete and construct aBatchResponse. Anrequestcall to V1 Send endpoint either completes with a success or throws an exception. So if an exception is thrown out, the exception will be caught insend_eachand turned into aSendResponsewith an exception. Therefore, unlikesend_all,send_eachdoes not always throw an exception for a total failure. It can also return aBatchResponsewith only exceptions in it.send_each_for_multicastcallssend_eachunder the hood.