V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
kernel1983
V2EX  ›  Python

终于有python tornado兼容的苹果推送服务 异步APNS库了

  •  
  •   kernel1983 · 2013-03-08 09:42:16 +08:00 · 5455 次点击
    这是一个创建于 4257 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如果已经有其他解决方案了, 请也让我知道, 反正我动手之前没找到
    tornado下面一些传统的库都要做一些修改, 其实我还想改改beanstalk的client端

    具体在这里:
    https://github.com/kernel1983/tornado_apns

    feedback那部分我还没有测试过, 但是推送消息是没问题了
    8 条回复    1970-01-01 08:00:00 +08:00
    kernel1983
        1
    kernel1983  
    OP
       2013-03-08 17:44:51 +08:00
    求github星星&fork 谢谢 :)
    alswl
        2
    alswl  
       2013-03-08 22:28:00 +08:00
    在这种场景下面,我更倾向于使用 队列 + push worker 的方案。
    kernel1983
        3
    kernel1983  
    OP
       2013-03-08 23:41:29 +08:00
    @alswl 没错, 但是队列的库暂时也没有基于ioloop异步的, 还是需要继续hack
    aisk
        4
    aisk  
       2013-03-08 23:44:26 +08:00
    @kernel1983 队列的话就不需要异步了吧,保持长连接然后一直从队列取往苹果发,如果发不过来可以多增加几个worker
    ipconfiger
        5
    ipconfiger  
       2013-03-08 23:45:15 +08:00
    apns的socket要保持长连接,频繁的连接apns服务器会导致被ban掉的
    kernel1983
        6
    kernel1983  
    OP
       2013-03-09 00:25:25 +08:00
    @ipconfiger 这个建议很对, tornado启动的时候做一次apns的连接就可以了, 编程的时候需要注意

    @aisk 如果是在tornado里面做任何的socket操作而不异步, 就发挥不出tornado框架单线程的威力. 尤其是远程连接.

    从这个角度讲, mysql的操作和queue/memcache server的操作因为是本地或者内网, 所以速度还可以接受, 但是连接到apple服务器应该还是会阻塞的挺厉害的.
    aisk
        7
    aisk  
       2013-03-09 00:36:46 +08:00 via Android
    消息队列加worker的话worker肯定就是单独进程了,apns的话又不需要获取发送的结果,这种模型很适用。这个时候消息队列其实类似一个代理,解决你说的连接远程服务器导致阻塞的问题。
    kernel1983
        8
    kernel1983  
    OP
       2013-03-09 13:04:37 +08:00
    @aisk 有道理, queue的方法很好.

    现在多了一种方法, 希望大家喜欢, 助人为乐自己也享受
    https://github.com/kernel1983/tornado_apns
    https://github.com/kernel1983/tornado_s3
    https://github.com/kernel1983/tornado_ses
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2578 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 11:30 · PVG 19:30 · LAX 04:30 · JFK 07:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.