play with pubnub
浏览 Python Weekly 文章时看到有一个消息订阅/消费服务商 PubNub, 并且提供一个不存储历史数据的免费版本, 试用看一下这个服务怎么样
服务简介
- 提供终身免费版本
- 无消息存储服务
- 每天限量 1 百万条
- [收费] 查看订阅用户的订阅相关数据
- [收费] 存储历史数据
- [收费] 流控制 在单连接中管理上千个频道
- [收费] 不同设备间的数据同步
- [收费] 手机消息推送
- [收费] 实时分析
- [收费] 访问控制
怎么用
注册免费账户获取 Publish Key
/Subscribe Key
SDK
官方提供许多主流语言 sdk, 我找了一个 python SDK 但是发现它在 Pubsub.py
文件中莫名其妙的加了 python **
代码,所以 fork 了一份到 我的 Github
可以通过
pip install git+git://github.com/CooperLuan/pubnub.git
来安装
使用
完整的 demo 代码在 我的 gist 可以看到
- 包引用
from Pubnub import Pubnub
- 初始化
PUB_KEY = 'YOUR PUB KEY'
SUB_KEY = 'YOUR SUB KEY'
pubnub = Pubnub(publish_key=PUB_KEY, subscribe_key=SUB_KEY)
- 测试
def _time_callback(response):
print('time callback', response)
pubnub.time(callback=_time_callback)
# time callback [14204378053277459]
服务器会返回一个时间戳
- 订阅
import threading
def _sub_callback(message, channel):
print('sub callback', channel, message)
def _sub_error(message):
print('sub error', message)
threading.Thread(
target=pubnub.subscribe,
kwargs=dict(channels="demo", callback=_sub_callback, error=_sub_error),
).start()
- 发布
def _pub_callback(message):
print(message)
channel = 'demo'
for c in ['purple', 'white', 'black', 'yellow', 'green']:
message = {'color': c}
pubnub.publish(
channel, message, callback=_pub_callback, error=_pub_callback)
- 历史
def _his_callback(*args, **kwargs):
print('his callback', args, kwargs)
def _his_error(*args, **kwargs):
print('his err', args, kwargs)
pubnub.history(
channel="demo", count=100, callback=_his_callback, error=_his_error)
- 输出
[1, 'Sent', '14204378053584782']
[1, 'Sent', '14204378053603093']
[1, 'Sent', '14204378053639586']
[1, 'Sent', '14204378053777784']
sub callback demo {'color': 'white'}
sub callback demo {'color': 'purple'}
sub callback demo {'color': 'yellow'}
sub callback demo {'color': 'green'}
his callback ([['Storage is not enabled for this subscribe key. Please contact help@pubnub.com'], 0, 0],)
{}
[1, 'Sent', '14204378062380378']
sub callback demo {'color': 'black'}
小结
- 从注册到最终实现非常简单
- sdk 不适用 python3 在 python3 普及率比较高的今天不知为何还会出现这种情况
- pub/sub 的延迟也不稳定/略高 从 0.1 - 1s 都有
blog comments powered by Disqus