之前香港的服务器,怎么发怎么有,腾讯云上海发 10 次大概能成功 1 ~ 2 次,还是经过几次重试才发出去(排除基本的证书、环境配置问题)
我没用极光推送什么的,就直接用第三方包直接使用苹果的推送服务,我现在有点搞不清楚是腾讯云的问题,还是国内服务器就做不了这个事情,还是比如我的宿主机系统有蹊跷的其他问题,你们有在国内服务器用苹果官方推送的么?
经过大量时间的排查,我只能定位到是系统的问题,腾讯云上海在将 Debian 11 换成 CentOS 后,故障消失,但是于此结论相矛盾的是,Vultr 的所有系统都没有这个问题。
本地测试服务器 @Debian 11: 经常无法发送 我自己的电脑 @macOS:正常发送 腾讯云上海服务器 @Debian 11: 经常无法发送 腾讯云上海服务器 @CentOS: 正常发送 Vultr 所有类型的系统(包含 Ubuntu、CentOS、Debian):均正常发送
Traceback (most recent call last):
File "/var/www/public/crawl/aapppns.py", line 8, in <module>
client.send_notification(token_hex, payload, topic)
File "/usr/local/lib/python3.9/dist-packages/apns2/client.py", line 93, in send_notification
stream_id = self.send_notification_async(token_hex, notification, topic, priority, expiration, collapse_id)
File "/usr/local/lib/python3.9/dist-packages/apns2/client.py", line 149, in send_notification_async
stream_id = self._connection.request('POST', url, json_payload, headers) # type: int
File "/usr/local/lib/python3.9/dist-packages/hyper/http20/connection.py", line 281, in request
self.endheaders(message_body=body, final=True, stream_id=stream_id)
File "/usr/local/lib/python3.9/dist-packages/hyper/http20/connection.py", line 544, in endheaders
self.connect()
File "/usr/local/lib/python3.9/dist-packages/hyper/http20/connection.py", line 377, in connect
self._send_preamble()
File "/usr/local/lib/python3.9/dist-packages/hyper/http20/connection.py", line 416, in _send_preamble
self._recv_cb()
File "/usr/local/lib/python3.9/dist-packages/hyper/http20/connection.py", line 771, in _recv_cb
self._single_read()
File "/usr/local/lib/python3.9/dist-packages/hyper/http20/connection.py", line 665, in _single_read
self._sock.fill()
File "/usr/local/lib/python3.9/dist-packages/hyper/common/bufsocket.py", line 169, in fill
raise ConnectionResetError()
ConnectionResetError
关键词 apns、debian
经过大量时间的排查,我只能定位到是系统的问题,腾讯云上海在将 Debian 11 换成 CentOS 后,故障消失,发送1000 条通知仅需要 1 秒,但是与此结论相矛盾的是,Vultr 的所有系统都没有这个问题。
本地测试服务器 on Debian 11: 经常无法发送
我自己的电脑 on macOS 12.6:正常发送
腾讯云上海服务器 on Debian 11: 经常无法发送
腾讯云上海服务器 on CentOS 7.6: 正常发送
Vultr 所有类型的系统(包含 Ubuntu、CentOS、Debian):均正常发送
报错信息如下
Traceback (most recent call last):
File "/var/www/public/crawl/aapppns.py", line 8, in <module>
client.send_notification(token_hex, payload, topic)
File "/usr/local/lib/python3.9/dist-packages/apns2/client.py", line 93, in send_notification
stream_id = self.send_notification_async(token_hex, notification, topic, priority, expiration, collapse_id)
File "/usr/local/lib/python3.9/dist-packages/apns2/client.py", line 149, in send_notification_async
stream_id = self._connection.request('POST', url, json_payload, headers) # type: int
File "/usr/local/lib/python3.9/dist-packages/hyper/http20/connection.py", line 281, in request
self.endheaders(message_body=body, final=True, stream_id=stream_id)
File "/usr/local/lib/python3.9/dist-packages/hyper/http20/connection.py", line 544, in endheaders
self.connect()
File "/usr/local/lib/python3.9/dist-packages/hyper/http20/connection.py", line 377, in connect
self._send_preamble()
File "/usr/local/lib/python3.9/dist-packages/hyper/http20/connection.py", line 416, in _send_preamble
self._recv_cb()
File "/usr/local/lib/python3.9/dist-packages/hyper/http20/connection.py", line 771, in _recv_cb
self._single_read()
File "/usr/local/lib/python3.9/dist-packages/hyper/http20/connection.py", line 665, in _single_read
self._sock.fill()
File "/usr/local/lib/python3.9/dist-packages/hyper/common/bufsocket.py", line 169, in fill
raise ConnectionResetError()
ConnectionResetError
关键词 apns2、debian、ConnectionResetError、推送 希望能帮到搜索到这个问题的人
1
iyaozhen 2022-10-30 17:58:19 +08:00
应该可以 我记得公司就是国内的服务器,但配置起来非常麻烦,还得支持 http/2
|
3
FDKevin 2022-10-30 21:27:47 +08:00 via iPhone
阿里云杭州 正常,不同服务器路线不一样吧 试试换 dns ?
实在不行套一层代理? |
4
edis0n0 2022-11-02 10:11:11 +08:00
外贸公司,阿里云香港服务器,非常正常
|
5
Phishion OP @edis0n0 感谢回复,我已经排查出大概的问题了,境外是怎么都正常,境内网络在近期出现了问题,表现在 Debian 、Ubuntu 系的系统使用那个 Python apns2 的包发通知出了问题,3 个条件要同时满足(即使用 apns2 + 境内网络 + Debian ),说是近期出了问题是我那个祖传 Docker 镜像一直没动过,前些时间跑单元测试也从来没卡过。
我知道这个观点有点扯,但是换成 CentOS 其他什么都没变立刻正常(测试了本机、华为云、腾讯云),我甚至把 Debian 关于 apns2 的依赖项对照着 CentOS 把版本对齐,无效。 包的地址是 https://github.com/Pr0Ger/PyAPNs2 ,应该非常容易实现测试条件,希望哪一天有大佬看到这个帖子,能免费告诉我其中的奥秘,😂 |
7
wliansheng 2023-02-07 12:17:22 +08:00
@Phishion 我最近也出现这个问题,下午详细排查一下
|
8
Phishion OP @wliansheng 有新的进展记得回复到本页哦
|