SDSS参与者的新协议。
sdss-clu的Python项目详细描述
CLU为sds-actor实现了一个新协议,同时提供了对遗留样式actor的支持。在
特点
安装
CLU可以使用pip作为
pip install sdss-clu
或者从源头
^{pr2}$开发
clu使用poetry进行依赖项管理和打包。要使用可编辑的安装,建议您在虚拟环境中设置poetry,并通过以下操作在虚拟环境中安装clu
poetry install
Pip还不支持PEP-517的可编辑安装。这意味着运行pip install -e .将失败,因为poetry不使用setup.py文件。作为一种解决方法,您可以使用create_setup.py文件来生成一个临时的setup.py文件。要在不使用poetry的可编辑模式下安装clu,请执行以下操作:
pip install --pre poetry
python create_setup.py
pip install -e .
快速入门
用CLU创建一个新的actor很容易。要实例化并运行一个actor,只需
importasynciofromcluimportAMQPActorasyncdefmain(loop):actor=awaitActor('my_actor').start()awaitactor.run_forever()asyncio.run(main(loop))
接下来,转到Getting started部分,了解有关使用actor的更多信息。更多示例可用here。在
为什么要为sds使用新的消息传递协议?在
不管你想说什么,基于Tron、opscore和{tt16}$的current SDSS message passing protocol是稳定和健壮的。那么,我们为什么要更换它呢?以下是原因:
- 它重新发明了轮子。好吧,老实说,Tron和opscore是在轮子还不是完全圆形的时候写的,但事实是,现在有了更健壮、标准和更好的文档技术来进行消息传递。在
- 我们可以通过依赖开源消息代理(如RabbitMQ)来消除对中央集线器产品的需求。在
- Tron和opscore是Python2,不清楚将它们转换为Python3所需的工作量。在
- 虽然有一些关于Tron和opscore的文档,并且代码写得很好,但是它也很麻烦,而且很难被没有编写它的人修改。它最终是不可维护的。在
- opsctore/actorkeys数据模型是定制的,非常难以维护。应首选标准解决方案,如带有JSON schema验证器的JSON。在
- asyncio提供了一个异步API,它比使用线程更干净、更易于编写代码。它也比twisted更具可读性和更少的复杂性,而且它是一个开发非常活跃的Python核心库。在
- CLU使用click解析命令,提供了一个定义良好、易于使用的解析器。在
- 项目
标签: