多信使天体物理学的pubsub客户端库
hop-client的Python项目详细描述
跃点客户端
Docs: | https://hop-client.readthedocs.io/en/stable/ |
hop client是Multimessenger天体物理学的pub-sub客户端库。在
安装
您可以通过pip、conda或从源代码安装hop。在
要使用pip安装:
pip install -U hop-client
要与conda一起安装,必须使用scima Anaconda组织的频道:
^{pr2}$从源安装:
tar -xzf hop-client-x.y.z.tar.gz
cd hop-client-x.y.z
python setup.py install
快速启动
默认情况下,启用身份验证,读取配置设置
来自config.toml
。此配置的路径可以通过运行
hop auth locate
。可以使用默认值初始化此配置
通过运行hop auth setup
进行设置。在CLI中禁用身份验证
客户端,可以运行--no-auth
。在
命令行界面
发布消息:
hop publish kafka://hostname:port/gcn -f CIRCULAR example.gcn3
tests/data
中提供了示例消息,包括:
- GCN循环(
example.gcn3
) - 一个VOEvent(
example_voevent.xml
)
使用邮件:
hop subscribe kafka://hostname:port/gcn -s EARLIEST
这将从最早的偏移量读取gcn主题中的消息 并读取消息,直到接收到流结束(EOS)。在
Python API
发布消息:
使用pythonapi,我们可以发布各种类型的消息,包括 结构化消息,如GCN通告和VOEvents:
fromhopimportstreamfromhop.modelsimportGCNCircular# read in a GCN circularwithopen("path/to/circular.gcn3","r")asf:circular=GCNCircular.load(f)withstream.open("kafka://hostname:port/topic","w")ass:s.write(circular)
此外,我们还可以发布非结构化消息,只要它们是 JSON可序列化:
fromhopimportstreamwithstream.open("kafka://hostname:port/topic","w")ass:s.write({"my":"message"})
默认情况下,对跃点代理启用身份验证,读取配置
来自config.toml
的设置。为了修改各种身份验证选项
可以配置Stream
实例并使用凭据传入Auth
实例:
fromhopimportStreamfromhop.authimportAuthauth=Auth("my-username","my-password")stream=Stream(auth=auth)withstream.open("kafka://hostname:port/topic","w")ass:s.write({"my":"message"})
要显式禁用身份验证,可以将auth
设置为False
。在
使用邮件:
fromhopimportstreamwithstream.open("kafka://hostname:port/topic","r")ass:formessageins:print(message)
这将监听Hop代理,监听新消息并将其打印到
当它们到达时进行标准输出,直到流中不再有消息。
默认情况下,这将只处理打开连接后的新消息。
start_at
选项允许您控制流中可以开始监听的位置
从。例如,如果您想监听主题中存储的所有消息,可以执行以下操作:
fromhopimportStreamfromhop.ioimportStartPositionstream=Stream(start_at=StartPosition.EARLIEST)withstream.open("kafka://hostname:port/topic","r")ass:formessageins:print(message)
发展
提供了Makefile以便于测试、部署和生成文档。在
命令列表可以用make help
列出。在
此外,在安装安装的scima客户机时,还提供了两个附加功能 所需的测试和文档库:
pip install -U hop-client[dev,docs]
{gita2标记新版本,使用gita2标记新版本:
git tag v0.0.1
要发布新版本并上载到包存储库,请在推送提交后按下标记:
git push --tags
- 项目
标签: