为 iOS 发送 9000/s 推送通知
Posted
技术标签:
【中文标题】为 iOS 发送 9000/s 推送通知【英文标题】:Sending 9000/s push notifications for iOS 【发布时间】:2013-07-03 14:08:21 【问题描述】:我的系统有大约 10000 个 ios 用户,我想向他们发送推送通知,但不花时间,因为我可能会在 5 分钟或更短的时间内为同一用户发送另一条消息, 我读过这个答案,之前它也建立在 Apple 网站上:
推送通知吞吐量和错误检查
使用 APN 没有上限或批量大小限制。 iOS 6.1 新闻稿称 APNs 已发送超过 4 万亿次推送 自成立以来的通知。它是在 WWDC 2012 上宣布的 APNs 每天发送 70 亿条通知。
如果您发现吞吐量低于每秒 9000 条通知, 您的服务器可能会受益于改进的错误处理逻辑。
但是当我一个一个发送通知时,我不知道如何发送 9000/s 消息。
我正在使用 Python (PyAPNs),这是我的代码:
from apns import APNs,Payload
result = execute("SELECT token_hex FROM `Users`")
for row in result:
token_hex = row['token_hex']
apns = APNs(use_sandbox=False, cert_file='Cert.pem', key_file='CertKey.pem')
payload = Payload(alert="Message",badge=1,sound='default')
apns.gateway_server.send_notification(token_hex, payload)
我在 30 多分钟内发送给 10000 个用户...
那么我的代码有什么问题,或者我可以做些什么来在更短的时间内发送通知......
提前致谢,
【问题讨论】:
【参考方案1】:我不了解 python,但查看您的代码,您似乎在不必要地重复调用。您应该使用相同的连接来发送所有通知。
也许你应该尝试这样的事情:
from apns import APNs,Payload
result = execute("SELECT token_hex FROM `Users`")
apns = APNs(use_sandbox=False, cert_file='Cert.pem', key_file='CertKey.pem')
payload = Payload(alert="Message",badge=1,sound='default')
for row in result:
token_hex = row['token_hex']
apns.gateway_server.send_notification(token_hex, payload)
这是假设您向所有设备发送相同的通知负载。
【讨论】:
感谢您的回答,我知道它会使其更快,但也不会像他们在文档中所说的那样发送 9000/s...发送给 9000 个用户大约需要 2 分钟以上是关于为 iOS 发送 9000/s 推送通知的主要内容,如果未能解决你的问题,请参考以下文章