用于Apple推送通知服务(APNS)的Python客户端
apns-clerk的Python项目详细描述
用于Apple Push Notification service (APNs)的python客户端。
这个项目是从apns客户机派生的,因为ssl握手有一个很小但很严重的问题,使得包不可用。 暂时请检查APNS客户端的documentation。
要求
标准库支持SSL transport。但是,不可能使用 它以字符串形式提供证书。我们在数据库中存储证书, 因为我们在许多芹菜加工机上处理不同的应用程序。肮脏的 解决方案是创建临时文件,但它不安全且速度慢。所以, 我们决定使用一个更好的openssl包装器,pyOpenSSL是 最容易处理。pyOpenSSL由标准网络按需加载 后端。如果您使用自己的后端,基于其他ssl实现, 那么您就不必安装pyOpenSSL。
更改日志
- v0.2.0
- 增加了对在一个apns连接期间发送不同负载的多个推送的支持,谢谢jon snyder!
- v0.1.2
- 删除了导致python出现问题的不需要的非ascii字符<;3
- v0.1.1
- 从打开的APNS客户端请求导入更改。谢谢杰森·斯帕福德、李哲和尼图·詹。
- v0.1
- 从APNS客户端分叉并修复了由Apple的SSLv3不推荐引起的SSL握手错误
备选方案
有many alternatives可用。 此库在以下设计决策方面有所不同:
- 支持来自字符串的证书。我们不分发证书文件 在工作机上,它们在需要时从数据库中获取数据。这个 这种方法简化了部署、升级和维护。
- 保持连接的持久性。ssl握手循环很慢。一次 连接已建立,它应至少保持打开几分钟, 等待下一批货。
- 支持增强格式。苹果的开发人员设计了一个臭名昭著的 推送协议。他们把它升级到了增强版 可以检测批处理中的哪些消息失败。
- clean pythonic api。不需要大量的类、长的异常列表等。
- 不要硬代码验证,让apns失败。这个决定使图书馆 更能证明未来。
待办事项
- [todo]为APNS职员提供自己的文档
- [todo]以前工作的正确属性