使基于消息的强大、高容量的通信变得简单。
项目描述
kiwiPy
kiwiPy 是一个库,它使得使用 RabbitMQ(以及其他可能的消息代理)进行远程消息传递变得非常简单。它被设计用于支持大数据和计算科学场景中的高吞吐量工作流程,目前已被 AiiDA 用于全球的计算材料研究。话虽如此,kiwiPy 完全通用,可以在任何需要高吞吐量和健壮消息传递的地方使用。
以下是您将获得的内容
RPC
广播(带有过滤器)
任务队列消息
让我们深入探讨,以下是一些从 rmq 教程 中取出的示例。要了解更多细节,请访问 文档。
RPC
客户端
import kiwipy
with kiwipy.connect('amqp://localhost') as comm:
# Send an RPC message
print(" [x] Requesting fib(30)")
response = comm.rpc_send('fib', 30).result()
print((" [.] Got %r" % response))
服务器
import threading
import kiwipy
def fib(comm, num):
if num == 0:
return 0
if num == 1:
return 1
return fib(comm, num - 1) + fib(comm, num - 2)
with kiwipy.connect('amqp://127.0.0.1') as comm:
# Register an RPC subscriber with the name 'fib'
comm.add_rpc_subscriber(fib, 'fib')
# Now wait indefinitely for fibonacci calls
threading.Event().wait()
工作进程
创建新任务
import sys
import kiwipy
message = ' '.join(sys.argv[1:]) or "Hello World!"
with rmq.connect('amqp://localhost') as comm:
comm.task_send(message)
以及工作进程
import time
import threading
import kiwipy
print(' [*] Waiting for messages. To exit press CTRL+C')
def callback(_comm, task):
print((" [x] Received %r" % task))
time.sleep(task.count(b'.'))
print(" [x] Done")
try:
with kiwipy.connect('amqp://localhost') as comm:
comm.add_task_subscriber(callback)
threading.Event().wait()
except KeyboardInterrupt:
pass
引用
如果您直接或间接使用 kiwiPy(例如通过使用 AiiDA),
Uhrin, M., & Huber, S. P. (2020). kiwiPy:大数据和计算科学工作流程的健壮、高容量消息传递,5,4–6. http://doi.org/10.21105/joss.02351
这有助于我们继续制作社区软件。
版本管理
此软件遵循 语义版本控制
贡献
想要新功能?发现了 bug?想要贡献更多文档或翻译吗?
我们总是欢迎帮助,从 贡献指南 开始。
开发
此软件包利用 tox 进行单元测试自动化,以及 pre-commit 进行代码格式化和测试自动化。
要安装这些开发依赖项
pip install tox pre-commit
要运行单元测试
tox
对于 rmq 测试,您需要一个运行的 RabbitMQ 实例。一种实现此目的的方法是使用 Docker 并启动 test/rmq/docker-compose.yml。
要运行预提交测试
pre-commit run --all
要构建文档
tox -e docs-clean
更改应以拉取请求(PR)的形式提交给 develop 分支。
发布版本
创建一个指向 develop 分支的发布 PR/commit,更新 kiwipy/version.py 和 CHANGELOG.md。
将 develop 合并到 master 分支
在 GitHub 上创建一个发布版本(https://github.com/aiidateam/kiwipy/releases/new),指向 master 上的发布提交,命名为 v.X.Y.Z(与 kiwipy/version.py 中的版本相同)
这将触发 continuous-deployment GitHub 工作流程,如果所有测试都通过,则会将软件包发布到 PyPi。请检查是否在 GitHub Actions 选项卡(https://github.com/aiidateam/kiwipy/actions)中成功完成。
(如果发布失败,请删除发布和标签)
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源代码分发
构建分发
kiwipy-0.8.4.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 625830fa07faac2c2a307bd3aa1caedac6596f37f9b9aba31b7f84c3d9c9f57a |
|
MD5 | f499a508a53f922461c09cdfd26a1e0a |
|
BLAKE2b-256 | 0eae3831e1562f1273195e686796690cba656e8937f414d2efcf47466ebfd949 |
kiwipy-0.8.4-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f2b260f1595689a0d835f1e2bf5373714001203d17c4d94e56ec299e793da495 |
|
MD5 | 61b68ac8c17b602dbc128d6fb0297021 |
|
BLAKE2b-256 | f7fead668377767dcc44d94258ac3ccbedbd55645cba893da842ed820c4ed937 |