使用城市飞艇连接的python包

uaconnect的Python项目详细描述


关于

uaconnect是一个python库,用于将Urban Airship Connectapi用于流媒体移动 事件数据到应用程序。

要求

在Python2.7和3.5上进行了测试,应该可以使用3.3+。

对于测试,uaconnect还需要Mock

运行测试

要运行测试,请运行:

$ python -m unittest discover

用法

Connect Getting Started Guide,如 以及Connect API了解更多 细节。

基本用法

若要使用库,请使用应用程序密钥实例化Consumer对象, 访问令牌和偏移记录器。你可以打开连接,然后 开始阅读事件。

>>> import uaconnect
>>> consumer = uaconnect.Consumer(
...     'application_key', 'access_token',
...     uaconnect.FileRecorder('.offset'))
>>> consumer.connect()
>>> for event in consumer.read():
...     if event is None:
...        continue
>>>     print("Got event: {}".format(event))
>>>     consumer.ack(event)

偏移记录器

偏移量记录器从抽象基类uaconnect.Recorder继承, 实现read_offsetwrite_offset方法。包括一台录音机 在库中,FileRecorder,它将offest存储在磁盘上。在 uaconnect.ext.redisrecorder包有一个 使用redis实例存储偏移量。

ack应根据在故障情况下 应用程序希望可能重播已处理的事件,或冒删除事件的风险。 对于后者,在读取事件后立即调用ack;对于前者,调用 ack仅在事件完全处理之后。

连接时的高级选项

城市飞艇连接支持多种options when connecting以确保 你只是在消耗你想要的数据。uaconnect很容易 使用这些连接参数和筛选器。

指定偏移量

城市飞艇连接的优点之一是你可以从 连接流中的特定位置。这是通过指定^{tt12}来完成的。$ 这与事件有关。当uaconnect自动跟踪时 使用uaconnect.FileRecorder为您设置偏移量,还可以显式设置 抵消。

>>> import uaconnect
>>> recorder = uaconnect.FileRecorder(".offset") # or wherever you would like the file to exist
>>> recorder.write_offset("8865499359") # a randomly chosen offset
>>> recorder.read_offset()
'8865499359'

这里的另一种方法是将偏移量显式写入文件,或者 无论使用什么Recorder子类来跟踪偏移量。

$ cat .offset 886549935

现在,下次连接时,它将从最后一个偏移量中拾取。

使用过滤器

过滤器是一种强大的过滤方式,可以过滤您想要的特定信息 从连接流中查看。可以按事件类型、设备类型、延迟进行筛选 在事件上,甚至在特定设备或通知上。

有关筛选器及其说明的完整列表,请查看the documentation

下面是一个简单的例子,说明如何使用带有uaconnect

的过滤器
>>> import uaconnect
>>> consumer = uaconnect.Consumer(
...     'application_key', 'access_token',
...     uaconnect.FileRecorder('.offset'))
>>> f = uaconnect.Filter()
>>> f.types("PUSH_BODY", "SEND") # only receive PUSH_BODY and SEND events.
>>> consumer.add_filter(f)
>>> consumer.connect()

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
http POST请求Java CouchDB   java删除带有大量尾随0的浮点字符串上的科学符号   JavaEE5和Hibernate   java如何在Spring Social中获得比特定id更早的tweet   java是框架。revalidate()在事件后获取输出是否重要?   java为什么不能返回通用映射?   java如何理解和优化工厂方法的高自时间   java Eclipse 202006错误由于项目的生成路径不完整,因此未生成该项目   多线程是java。util。向量序列化线程安全?   在Eclipse和java中使用不同的构建配置。属性文件   编译Java:从命令行运行的问题   java如何知道消息是否已确认/取消?   Java铸造一套   java Android Seekbar progress已更改变量,给出错误