File: client.py

package info (click to toggle)
python-aioapns 4.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 160 kB
  • sloc: python: 835; makefile: 3
file content (53 lines) | stat: -rw-r--r-- 1,261 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import asyncio
import logging

import uvloop

from aioapns import APNs, NotificationRequest


def setup_logger(log_level):
    log_level = getattr(logging, log_level)
    logging.basicConfig(
        format="[%(asctime)s] %(levelname)8s %(module)6s:%(lineno)03d %(message)s",
        level=log_level,
    )


if __name__ == "__main__":
    asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())
    setup_logger("INFO")

    client_cert = "apns-production-cert.pem"
    device_token = "<DEVICE_TOKEN>"
    message = {
        "aps": {
            "alert": "Hello from APNs Tester.",
            "badge": "1",
            "sound": "default",
        }
    }

    apns = APNs(client_cert)

    async def send_request():
        request = NotificationRequest(
            device_token=device_token, message=message
        )
        await apns.send_notification(request)

    async def main():
        send_requests = [send_request() for _ in range(1000)]
        import time

        t = time.time()
        await asyncio.wait(send_requests)
        print("Done: %s" % (time.time() - t))
        print()

    try:
        loop = asyncio.get_event_loop()
        asyncio.ensure_future(main())
        loop.run_forever()
    except KeyboardInterrupt:
        pass