使基于消息的强大、高容量的通信变得简单。
项目描述
kiwiPy
kiwiPy 是一个库,它使得使用 RabbitMQ(以及其他可能的消息代理)进行远程消息传递变得非常简单。它被设计用于支持大数据和计算科学场景中的高吞吐量工作流程,目前已被 AiiDA 用于全球的计算材料研究。话虽如此,kiwiPy 完全通用,可以在任何需要高吞吐量和健壮消息传递的地方使用。
以下是您将获得的内容
- RPC 
- 广播(带有过滤器) 
- 任务队列消息 
让我们深入探讨,以下是一些从 rmq 教程 中取出的示例。要了解更多细节,请访问 文档。
RPC
客户端
import kiwipy
with kiwipy.connect('amqp://') 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://') 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://') 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 |