通过网络创建软件总线的消息代理
ReactOBus的Python项目详细描述
反应物
reactobus是一个消息代理,它帮助在 网络和对一些信息的反应。
功能
reactobus能够:
- 从不同来源收集事件(作为网络消息)
- 发布事件流
- 将事件存储在数据库中
- 当事件符合某些条件时,启动特定命令
在不久的将来,reactobus将能够:
- 筛选出一些事件
- 动态修改事件格式
- …
使用reactobus
要求
众所周知,reactobus在linux下与python3.4和python3.5一起工作。
这取决于(请参见requirements.txt):
- PYZMQ
- 皮亚姆
- sqlalchemy(如果希望将事件存储在数据库中)
- 设置程序标题
安装
Reactobus在上可用 pypi并且可以安装 使用:
pip install ReactOBus
默认情况下,pip不会安装sqlalchemy。如果需要,安装它 之后手动或要求pip包含正确的reactobus变量 使用:
pip install ReactOBus[db]
也可以直接从源代码执行reactobus:
git clone https://github.com/ivoire/ReactOBus.git cd ReactOBus virtualenv -p python3.5 venv source venv/bin/activate pip install -r requirements.txt python reactobus --level DEBUG --conf share/examples/reactobus.yaml
配置
配置文件是一个yaml字典,其中包含:
- inputs:输入流列表
- outputs:输出流列表
- core:内部套接字的配置
- 反应器:反应物的反应部分
- db:数据库配置
除了core和inputs之外的所有键都是可选的。如果可选键 在配置中找不到,相应的模块将不会 加载。
消息格式
目前,reactobus只接受一种类型的消息。这个 消息应该是具有以下含义的多部分zmq消息:
- 主题
- uuid(由python中的uuid.uuid1()生成)
- datetime生成消息时(isoformat)
- 发送进程或用户的用户名。
- data作为json
测试反应物
为了运行reactobus自动测试,您必须安装 py.test:
pip install pytest
然后使用:
py.test tests -v [...] tests/test_core.py::test_core PASSED tests/test_db.py::test_run PASSED tests/test_db.py::test_errors PASSED [...]
每次推送时,测试和覆盖率的计算日期为: