从Python异步和分布式调度Ewoks工作流
项目描述
ewoksjob
ewoks工作流作业调度的实用工具。
Ewoksjob为Python提供了异步和分布式调度ewoks的接口。
请注意,ewoksjob 在工作流程中分配执行,而 ewoksdask 在工作流程中分配任务的执行。因此,在工作流程的上下文中,存在两个级别的作业调度。
需要调度工作流程的主要客户端包括
- Ewoksserver:ewoks的Web后端。
- Bliss:ESRF光束线控制系统。
- Daiquiri:Bliss的Web后端。
安装
在客户端上安装
pip install ewoksjob
在工作节点上安装
pip install ewoksjob[worker]
入门指南
启动一个可以执行ewoks图的worker池
ewoksjob worker
在客户端上启动工作流程
from ewoksjob.client import submit
workflow = {"graph": {"id": "mygraph"}}
future = submit(args=(workflow,))
result = future.get()
请注意,这两个环境都需要能够导入 celeryconfig
,它包含celery配置(主要指消息代理和结果后端URL)。
“Hello World”示例
克隆Git仓库并启动worker池
scripts/worker.sh --sql
提交工作流程
scripts/runjobs.sh --sql
测试
pytest --pyargs ewoksjob
要运行redis测试,您需要 redis-server
(例如,conda install redis-server
)。