从Google应用程序引擎python发送iOS推送通知

从Google应用程序引擎python发送iOS推送通知,python,ios,google-app-engine,Python,Ios,Google App Engine,我一直在到处寻找关于如何通过GAE在python编写的服务器上实现这一点的示例代码,但运气不好 有人能帮我完成这个功能吗?(我相信这应该是相当直截了当的) 我使用这个库,它在我的应用程序中运行良好。 在app.yaml中启用ssl libraries: - name: ssl version: latest 代码如下所示,token_hex==从设备发送的推送通知令牌。你必须考虑一些变量 from apns import APNs, Payload apns = APNs(use_san

我一直在到处寻找关于如何通过GAE在python编写的服务器上实现这一点的示例代码,但运气不好


有人能帮我完成这个功能吗?(我相信这应该是相当直截了当的)

我使用这个库,它在我的应用程序中运行良好。

在app.yaml中启用ssl

libraries:
- name: ssl
  version: latest
代码如下所示,token_hex==从设备发送的推送通知令牌。你必须考虑一些变量

from apns import APNs, Payload
apns = APNs(use_sandbox=use_sandbox, 
        cert_file=path/to/cert.pem',
        key_file=path/to/key-noenc.pem')
payload = Payload(alert='hello', sound="default", badge=1,custom={})
apns.gateway_server.send_notification(token_hex, payload)
for (token_hex, fail_time) in apns.feedback_server.items():
    logging.info(token_hex) 
    logging.info(fail_time)

也许您可以考虑这个具有增强消息支持功能的PYAPN的分叉版本。
这意味着它将捕获故障消息的错误响应,并在故障消息和接收错误响应之间发送时重新发送被APN丢弃的消息

解决方案:

  • 无阻塞ssl套接字连接,无需等待响应即可发送通知
  • 一个单独的线程,用于不断检查读取连接的错误响应
  • 一个已发送通知缓冲区,用于重新发送在通知失败或APN关闭任意连接后发送的通知。 (参考minorblend的非阻塞apns请求,hagino3000的增强消息)
结果:

  • 以1000/秒的吞吐量发送通知
  • 在更糟糕的情况下,当第一次发送的通知失败时,错误响应在1秒后响应,发送的999通知被APN丢弃,同时,所有丢弃的999通知都将重新发送,而不会丢失任何通知。使用相同的逻辑,如果通知重新发送失败,它将在失败的通知之后重新发送其余的重新发送通知

您看过任何python APNS库并尝试过使用它们吗?我知道GAE的套接字有问题,它们需要打开它。我想知道是否有人有任何经验,可以简单地告诉我什么是最好的使用方式。过去有一个限制,即从GAE沙箱打开出站套接字,这意味着你只能通过城市飞艇或parse等服务发送推送通知。出站套接字现在是一个“预览”功能-因此它可能不会永远存在,但它是可用的。我在使用此库时会出现此错误:apns.py”,第155行,在_connectself.\u ssl=wrap_socket(self.\u socket,self.key_文件,self.cert_文件)/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ssl.py“,第387行,在wrap_socket ciphers=ciphers)文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ssl.py”,第141行,在init ciphers中)类型错误:必须是_socket.socket,而不是sockety您必须在应用程序中启用ssl库。yaml@LiorZ您还必须应用以下内容: