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.3.0.tar.gz (6.0 kB view details)

Uploaded Source

Built Distribution

aioexponent-0.3.0-py3-none-any.whl (8.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: aioexponent-0.3.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.6

File hashes

Hashes for aioexponent-0.3.0.tar.gz
Algorithm Hash digest
SHA256 46ca487a1976ebb2a830d43281060eea383bb68184d9109aab5d7ab68fd51aac
MD5 ab739d17d355d6566c5d7691a233271a
BLAKE2b-256 698d9e50e58b97fb2f9eeeadd689baf3747c0f261b3ec78180f47bf233c8f62a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: aioexponent-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 8.4 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.6

File hashes

Hashes for aioexponent-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f238aa6bc8e35ba3aad47580694fad213afdbaab146f8015b60685301f86d7a0
MD5 1d0dda99fa605b76c01ebac02836379d
BLAKE2b-256 5fa412facfeece3bc17ce4666bb01c2a4a8192628149205b926cdd8666a1211b

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