Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(fcm): Add send_each and send_each_for_multicast for FCM batch send #706

Merged
merged 3 commits into from
Jun 9, 2023

Conversation

Doris-Ge
Copy link
Contributor

@Doris-Ge Doris-Ge commented Jun 7, 2023

  • Deprecate send_all() and send_multicast() APIs.
  • Add new send_each() and send_each_for_multicast() APIs.

send_each vs send_all

  1. send_each sends one HTTP request to V1 Send endpoint for each message in the list. send_all sends only one HTTP request to V1 Batch Send endpoint to send all messages in the array.
  2. send_each uses concurrent.futures.ThreadPoolExecutor to run and wait for all request calls to complete and construct a BatchResponse. An request call 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 in send_each and turned into a SendResponse with an exception. Therefore, unlike send_all, send_each does not always throw an exception for a total failure. It can also return a BatchResponse with only exceptions in it.

send_each_for_multicast calls send_each under the hood.

RELEASE NOTE: send_all() and send_multicast() APIs are now deprecated. Use send_each() and send_each_for_multicast() APIs instead.

Doris-Ge and others added 3 commits May 5, 2023 12:29
`send_each` vs `send_all`
1. `send_each` sends one HTTP request to V1 Send endpoint for each message in the list. `send_all` sends only one HTTP request to V1 Batch Send endpoint to send all messages in the array.
2. `send_each` uses concurrent.futures.ThreadPoolExecutor to run and wait for all `request` calls to complete and construct a `BatchResponse`. An `request` call 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 in `send_each` and turned into a `SendResponse` with an exception. Therefore, unlike `send_all`, `send_each` does not always throw an exception for a total failure. It can also return a `BatchResponse` with only exceptions in it.

`send_each_for_multicast` calls `send_each` under the hood.
* Add integration tests for send_each and send_each_for_multicast

Add test_send_each, test_send_each_500 and test_send_each_for_multicast

* chore: Fix pypy tests (#694)

* chore(auth): Update Auth API to `v2` (#691)

* `v2beta1` -> `v2`

* Reverting auto formatting changes

* undo auto formatting

* Add release notes to project URLs in PyPI (#679)

It's useful to be able to navigate to the release notes easily
from the package index when upgrading.

"Release Notes" is a special keyword that will have the scroll icon
in the project page.

A random example:

* https://pypi.org/project/streamlit/
* https://github.com/streamlit/streamlit/blob/815a3ea6fa3e7f9099b479e8365bd3a5874ddc35/lib/setup.py#L111

Co-authored-by: Lahiru Maramba <llahiru@gmail.com>

---------

Co-authored-by: Lahiru Maramba <llahiru@gmail.com>
Co-authored-by: pragatimodi <110490169+pragatimodi@users.noreply.github.com>
Co-authored-by: Samuel Dion-Girardeau <samueldg@users.noreply.github.com>
@Doris-Ge Doris-Ge changed the title send_each and send_each_for_multicast for FCM batch send feat(fcm): send_each and send_each_for_multicast for FCM batch send Jun 8, 2023
@Doris-Ge Doris-Ge changed the title feat(fcm): send_each and send_each_for_multicast for FCM batch send feat(fcm): send_each and send_each_for_multicast for FCM batch send Jun 8, 2023
@lahirumaramba lahirumaramba changed the title feat(fcm): send_each and send_each_for_multicast for FCM batch send feat(fcm): Add send_each and send_each_for_multicast for FCM batch send Jun 9, 2023
@lahirumaramba lahirumaramba added release-note release:stage Stage a release candidate labels Jun 9, 2023
Copy link
Member

@lahirumaramba lahirumaramba left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! Thank you!

@Doris-Ge Doris-Ge merged commit 4323ed8 into master Jun 9, 2023
9 checks passed
@Doris-Ge Doris-Ge deleted the fcm-batch-send branch June 9, 2023 17:27
akhilnarang added a commit to akhilnarang/vlrgg-scraper that referenced this pull request Jul 17, 2023
The latter is now deprecated: firebase/firebase-admin-python#706

Signed-off-by: Akhil Narang <me@akhilnarang.dev>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
release:stage Stage a release candidate release-note
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants