Skip to main content

Expo Server SDK for Python Asyncio

Project description

# aioexponent

If you have problems with the code in this repository, please file an issue or a pull-request. Thanks!

## Installation

```
pip install aioexponent
```

## Usage

Use to send push notifications to Exponent Experiences from a Python server.

[Full documentation](https://docs.expo.io/versions/latest/guides/push-notifications.html#http2-api) on the API is available if you want to dive into the details.

Here's an example on how to use this with retries and reporting via [pyrollbar](https://github.com/rollbar/pyrollbar).
```python
from aioexponent import DeviceNotRegisteredError
from aioexponent import PushClient
from aioexponent import PushMessage
from aioexponent import PushResponseError
from aioexponent import PushServerError
from aiohttp import ClientError


# Basic arguments. You should extend this function with the push features you
# want to use, or simply pass in a `PushMessage` object.
async def send_push_message(tokens, message, extra=None):
client = PushClient()
try:
response = await client.publish_multiple([
PushMessage(to=token,
body=message,
data=extra) for token in tokens])
except PushServerError as exc:
# Encountered some likely formatting/validation error.
rollbar.report_exc_info(
extra_data={
'tokens': tokens, 'message': message, 'extra': extra
'errors': exc.errors,
'response_data': exc.response_data,
})
raise
except (ClientError) as exc:
# Encountered some Connection or HTTP error - retry a few times in
# case it is transient.
rollbar.report_exc_info(
extra_data={'tokens': tokens, 'message': message, 'extra': extra})
raise retry(exc=exc)

try:
# We got a response back, but we don't know whether it's an error yet.
# This call raises errors so we can handle them with normal exception
# flows.
response.validate_response()
except DeviceNotRegisteredError:
# Mark the push token as inactive
from notifications.models import PushToken
PushToken.objects.filter(token=token).update(active=False)
except PushResponseError as exc:
# Encountered some other per-notification error.
rollbar.report_exc_info(
extra_data={
'tokens': tokens,
'message': message,
'extra': extra,
'push_response': exc.push_response._asdict(),
})
raise retry(exc=exc)
```


Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aioexponent-0.4.0.tar.gz (6.0 kB view details)

Uploaded Source

Built Distribution

aioexponent-0.4.0-py3-none-any.whl (8.5 kB view details)

Uploaded Python 3

File details

Details for the file aioexponent-0.4.0.tar.gz.

File metadata

  • Download URL: aioexponent-0.4.0.tar.gz
  • Upload date:
  • Size: 6.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.10.0 pkginfo/1.4.2 requests/2.18.4 setuptools/38.5.2 requests-toolbelt/0.8.0 tqdm/4.19.7 CPython/3.6.7

File hashes

Hashes for aioexponent-0.4.0.tar.gz
Algorithm Hash digest
SHA256 2e2c832f0edfda5133cdc8dde23df84bc65451a4139e212edcfce020d591e081
MD5 43c97d268c68b37ee3e57a937042eb63
BLAKE2b-256 2887e5ccf5e6b48dad89eacc9f7c3b8361c960f1003c4bd77a2409d388670741

See more details on using hashes here.

File details

Details for the file aioexponent-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: aioexponent-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 8.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.10.0 pkginfo/1.4.2 requests/2.18.4 setuptools/38.5.2 requests-toolbelt/0.8.0 tqdm/4.19.7 CPython/3.6.7

File hashes

Hashes for aioexponent-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8b8ab3251b3b3ac8e7f479ceca3c7148f17fe0884ee83cdbd07fcb51265fa659
MD5 005c2b181d45878566abcc5b0b869cf2
BLAKE2b-256 2cf119abc68b7a0dbd4b5734e3033bcda302931df57a2933e64315b81a622a7d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page