用于Apple推送通知服务(APNS)的Python客户端
apns-client的Python项目详细描述
用于Apple Push Notification service (APNs)的python客户端。 检查documentation以了解如何使用它。
检查具有类似接口的客户机是否有Google Cloud Messaging。
要求
标准库支持SSL transport。但是,不可能使用 它以字符串形式提供证书。我们在数据库中存储证书, 因为我们在许多芹菜加工机上处理不同的应用程序。肮脏的 解决方案是创建临时文件,但它不安全且速度慢。所以, 我们决定使用一个更好的openssl包装器,pyOpenSSL是 最容易处理。pyOpenSSL由标准网络按需加载 后端。如果您使用自己的后端,基于其他ssl实现, 那么您就不必安装pyOpenSSL。
备选方案
有many alternatives 可用。我们从pyapns开始 以及APNSWrapper。这个图书馆 在以下设计决策中有所不同:
- 支持来自字符串的证书。我们不分发证书文件 在工作机上,它们在需要时从数据库中获取数据。这个 这种方法简化了部署、升级和维护。
- 保持连接的持久性。ssl握手循环很慢。一次 连接已建立,它应至少保持打开几分钟, 等待下一批货。
- 支持增强格式。苹果的开发人员设计了一个臭名昭著的 推送协议。他们把它升级到了增强版 可以检测批处理中的哪些消息失败。
- clean pythonic api。不需要大量的类、长的异常列表等。
- 不要硬代码验证,让apns失败。这个决定使图书馆 更能证明未来。
更改日志
- v0.2
- 网络层变得可插入,使得基于gevent的实现 可能的。所有内容都经过重构,例如IO、多线程和SSL 现在按需加载和使用,允许您完全重写任何 客户的一部分。api在很大程度上是向后兼容的。IO相关 配置被移动到传输层,异常处理有点 更详细。客户端使用标准日志来发送细粒度 调试消息。
- v0.1
- 第一个简单实现,使用原始套接字和pyOpenSSL进行硬连接。 它在gevent或任何其他green环境中都不工作。
支架
apns客户端由Sardar Yumatov创建, 如果您发现任何错误或需要帮助,请与我联系。如果需要全功能推送通知服务,请联系Getlogic 适用于所有流行平台。您可以在APNs Bitbucket page上查看未解决的问题。