1
kernel1983 OP 求github星星&fork 谢谢 :)
|
2
alswl 2013-03-08 22:28:00 +08:00
在这种场景下面,我更倾向于使用 队列 + push worker 的方案。
|
3
kernel1983 OP @alswl 没错, 但是队列的库暂时也没有基于ioloop异步的, 还是需要继续hack
|
4
aisk 2013-03-08 23:44:26 +08:00
@kernel1983 队列的话就不需要异步了吧,保持长连接然后一直从队列取往苹果发,如果发不过来可以多增加几个worker
|
5
ipconfiger 2013-03-08 23:45:15 +08:00
apns的socket要保持长连接,频繁的连接apns服务器会导致被ban掉的
|
6
kernel1983 OP @ipconfiger 这个建议很对, tornado启动的时候做一次apns的连接就可以了, 编程的时候需要注意
@aisk 如果是在tornado里面做任何的socket操作而不异步, 就发挥不出tornado框架单线程的威力. 尤其是远程连接. 从这个角度讲, mysql的操作和queue/memcache server的操作因为是本地或者内网, 所以速度还可以接受, 但是连接到apple服务器应该还是会阻塞的挺厉害的. |
7
aisk 2013-03-09 00:36:46 +08:00 via Android
消息队列加worker的话worker肯定就是单独进程了,apns的话又不需要获取发送的结果,这种模型很适用。这个时候消息队列其实类似一个代理,解决你说的连接远程服务器导致阻塞的问题。
|
8
kernel1983 OP @aisk 有道理, queue的方法很好.
现在多了一种方法, 希望大家喜欢, 助人为乐自己也享受 https://github.com/kernel1983/tornado_apns https://github.com/kernel1983/tornado_s3 https://github.com/kernel1983/tornado_ses |