Python client for Google Cloud Messaging (GCM)
Check the client with similar interface for Apple Push Notification service.
Th only alternative library known at the time of writing was python-gcm. This library differs in the following design decisions:
- Predictable execution time. Do not automatically retry request on failure. According to Google’s recommendations, each retry has to wait exponential back-off delay. We use Celery back-end, where the best way to retry after some delay will be scheduling the task with countdown=delay. Sleeping while in Celery worker hurts your concurrency.
- Do not forget results if you need to retry. This sounds obvious, but python-gcm drops important results, such as canonical ID mapping if request needs to be (partially) retried.
- Clean pythonic API. No need to borrow all Java like exceptions etc.
- Do not hard-code validation, let GCM fail. This decision makes library a little bit more future proof.