多信使天体物理学的pubsub客户端库

hop-client的Python项目详细描述


跃点客户端

codecov

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

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

推荐PyPI第三方库


热门话题
java JavaFX SwingWorker等价物?   java如何检查一个字符串只包含数字和一个小数点?   java遇到了异常组织。阿帕奇。卡塔琳娜。LifecycleException:无法启动组件   java如何从日期格式获取最低计时单位?   java应用服务器与开发过程的集成   java我无法运行Junit测试   无法在java多线程处理中维护生产者任务的顺序   java如何在CLI应用程序中“拦截”Ctrl+C?   java如何使用JSch进行原子SFTP文件传输,以便在写入过程完成之前无法访问该文件?   java当用户摆弄html范围滑块时,如何更改内容(文本)?   如何在Java中向现有文件追加文本?   JUnit测试中的java模拟Apache驼峰位置   java Maven更新项目和依赖项