V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Phishion
V2EX  ›  程序员

请问腾讯云境内的服务器是不是用不了苹果的推送?

  •  
  •   Phishion · 2022-10-30 14:55:35 +08:00 · 1951 次点击
    这是一个创建于 755 天前的主题,其中的信息可能已经有所发展或是发生改变。

    之前香港的服务器,怎么发怎么有,腾讯云上海发 10 次大概能成功 1 ~ 2 次,还是经过几次重试才发出去(排除基本的证书、环境配置问题)

    我没用极光推送什么的,就直接用第三方包直接使用苹果的推送服务,我现在有点搞不清楚是腾讯云的问题,还是国内服务器就做不了这个事情,还是比如我的宿主机系统有蹊跷的其他问题,你们有在国内服务器用苹果官方推送的么?

    第 1 条附言  ·  2022-10-31 18:17:31 +08:00

    经过大量时间的排查,我只能定位到是系统的问题,腾讯云上海在将 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

    第 2 条附言  ·  2022-10-31 18:25:19 +08:00

    经过大量时间的排查,我只能定位到是系统的问题,腾讯云上海在将 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、推送 希望能帮到搜索到这个问题的人

    8 条回复    2023-02-07 13:30:15 +08:00
    iyaozhen
        1
    iyaozhen  
       2022-10-30 17:58:19 +08:00
    应该可以 我记得公司就是国内的服务器,但配置起来非常麻烦,还得支持 http/2
    Phishion
        2
    Phishion  
    OP
       2022-10-30 18:28:16 +08:00
    @iyaozhen 那你们用国内服务器发送推送通知是通畅无压力的么?我这边就像访问 Github 卡的不行
    FDKevin
        3
    FDKevin  
       2022-10-30 21:27:47 +08:00 via iPhone
    阿里云杭州 正常,不同服务器路线不一样吧 试试换 dns ?
    实在不行套一层代理?
    edis0n0
        4
    edis0n0  
       2022-11-02 10:11:11 +08:00
    外贸公司,阿里云香港服务器,非常正常
    Phishion
        5
    Phishion  
    OP
       2022-11-02 11:16:03 +08:00
    @edis0n0 感谢回复,我已经排查出大概的问题了,境外是怎么都正常,境内网络在近期出现了问题,表现在 Debian 、Ubuntu 系的系统使用那个 Python apns2 的包发通知出了问题,3 个条件要同时满足(即使用 apns2 + 境内网络 + Debian ),说是近期出了问题是我那个祖传 Docker 镜像一直没动过,前些时间跑单元测试也从来没卡过。

    我知道这个观点有点扯,但是换成 CentOS 其他什么都没变立刻正常(测试了本机、华为云、腾讯云),我甚至把 Debian 关于 apns2 的依赖项对照着 CentOS 把版本对齐,无效。

    包的地址是 https://github.com/Pr0Ger/PyAPNs2 ,应该非常容易实现测试条件,希望哪一天有大佬看到这个帖子,能免费告诉我其中的奥秘,😂
    edis0n0
        6
    edis0n0  
       2022-11-02 13:26:23 +08:00
    @edis0n0 #4 补充:系统是 Ubuntu 16.04 LTS 和 18.04 LTS ,好多年了没人敢升级
    wliansheng
        7
    wliansheng  
       2023-02-07 12:17:22 +08:00
    @Phishion 我最近也出现这个问题,下午详细排查一下
    Phishion
        8
    Phishion  
    OP
       2023-02-07 13:30:15 +08:00
    @wliansheng 有新的进展记得回复到本页哦
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   907 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 22:07 · PVG 06:07 · LAX 14:07 · JFK 17:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.