Spotify Luigi的简单配置。
项目描述
MarioBros是一个Python模块,以类似于makefile的方式配置Spotify-Luigi。
Spotify-Luigi是一个Python模块,帮助您构建复杂的批处理作业流程。它处理依赖关系解析、工作流程管理、可视化等。配置文件将称为MarioFiles。
主分支状态
编写MarioFile
MarioFiles以几个部分结构化,代表各种任务。
任务定义
任务定义的示例是
[task_name] target: source1 source2 source3 task_command
任务名称定义为方括号内。目标和源之间用两个点分隔。下一行是任务命令。在task_command中,您可以使用${TARGET}和${SOURCES[i]}调用目标名称和源名称,其中i是索引或Python切片。在大括号中,您可以使用在上方定义的变量执行Python代码。您可以使用Python正则表达式语法匹配目标名称的部分与源名称的部分。例如
[task_name] (.*)-(.*)-(.*).txt: \1.txt \2.txt \3.txt task_command --output ${TARGET} --first-input ${SOURCES[0]} --other-inputs ${SOURCES[1:]}
该任务匹配类似于 first-second-third.txt 的目标,包含三个源文件 first.txt、second.txt 和 third.txt。 \1 代表第一个匹配,\2 代表第二个匹配,\3 代表第三个。
您还可以定义任务变量并在下面使用它们。您必须在任务名称下面定义它们,如下所示
[task_name] variable1 = value1 variable2 = value2 target: source task_command -o ${TARGET} -i ${SOURCES} --par1 ${variable1} --par2 ${variable2}
默认部分
默认部分是在文件顶部定义的,没有指定名称的部分。在这个部分中,有全局变量的定义和默认任务的定义。默认任务在没有请求其他任务时执行
global_variable1 = value1 global_variable2 = value2 default_target: source1 source2 default_task_command
在文件顶部,您可以按这种方式包含其他 MarioFiles,路径如下
include mariofile_path.ini
被包含的 MarioFile 的全局变量将被添加到 MarioFile 的顶部。被包含的 MarioFiles 的任务将被添加到 MarioFile 的末尾。如果有同名变量或任务,只有顶级的一个将被包含。
总结一下,一个典型的 MarioFile 将如下所示
include included_mariofile.ini global_var1 = value1 global_var2 = value2 (.*)-main_target.out: \1-\1-task1 default_task -o ${SOURCES} -i ${TARGET} [task_1] RESOURCES_CPU = 4 (.*)-(.*)-task1: source1 source2 task_1 -o ${TARGET} -i ${SOURCES} -j ${RESOURCES_CPU}
执行 Mario
Mario 命令行是
$ mario --help
Usage: mario [OPTIONS] [TARGETS]...
Options:
-f, --file, --mariofile PATH Main configuration file
-p, --port INTEGER Set `luigi.build` scheduler_port parameter.
--workers INTEGER Set the number of workers
--local-scheduler Run local scheduler.
--print-ns Print namespaces: Print the MarioFile with the
included tasks and variables
-n, --dry-run Don't actually run any commands; just print
them.
--help Show this message and exit.
使用
所有 Mario 选项和参数都是可选的。
默认任务请求是 [DEFAULT]。
默认 mariofile 是 mario.ini。
使用 --print-ns 标志,它将打印包含的任务和变量的整个 MarioFile。
使用 --dry-run 标志,它不会实际运行任何命令;只是打印它们。
使用外部调度器
首先,您必须运行 luigid
$ luigid
然后,您可以使用上面描述的命令行运行 mario 脚本
$ mario
这样,mario 将使用 mario.ini 作为 MarioFile 执行默认目标。您也可以使用与 mario.ini 不同的 MarioFile 请求特定的目标,如下所示
$ mario -f my_mariofile.ini target.out
您可以在 localhost:8082 地址上可视化调度器。将有一个任务列表和处理的树状图。
使用本地调度器
如果您不需要可视化调度器,您可以在没有 luigid 运行的情况下运行 mario,并使用以下本地调度器
$ mario --local-scheduler
Luigi 配置文件
Luigi 可以存储处理统计信息并管理资源。您必须配置 luigi,编写 client.cfg 文件,然后从 client.cfg 目录启动 luigid。
将统计信息写入数据库
在 client.cfg 文件中,您可以配置统计信息的 db 路径。一个 client.cfg 的示例是
[scheduler] record_task_history = True state_path = /path/to/luigi-state.pickle [task_history] db_connection = sqlite:////path/to/db/luigi-task-hist.db
资源管理
您还可以指定单个任务的所需资源。
您必须在 client.cfg 文件中定义可用的资源,定义如下 [resources] 部分
[resources] cpus = 64
您可以通过设置本地任务变量 RESOURCES_RESOURCE_NAME 为单个任务指定所需资源,其中 RESOURCE_NAME 是在 client.cfg 中定义的资源名称,例如
[task_name] RESOURCES_cpus = 4 target: sources task_command -j ${RESOURCES_cpus}
请求的资源是 4 个 cpus。
安装
在当前 python 环境中安装
pip install mariobros
项目详情
下载文件
下载适用于您平台上的文件。如果您不确定选择哪个,请了解更多关于 安装包的信息。
源分布
构建分布
mariobros-0.4.4.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b96076d0127d990b00619576b7c8409a0797944393db9044a731618cfdcbb954 |
|
MD5 | 037b9303363e22c0543702fda1b9e6f6 |
|
BLAKE2b-256 | 346336c4012f058fabd4be4a5307db3e56de7d3d187b3ee0c602f2b30eff0e0d |
mariobros-0.4.4-py2.py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f1676a3213f98e3ebf0f32f2451d0727b0f2f39e951f80e89ce88ddbba7c7422 |
|
MD5 | aaa0a42c92939bb6c7f32d7641fcb09f |
|
BLAKE2b-256 | efa891828838bfd9d1001a3cd5b06d33b3f0535ca9f2017544fffd87cac7401f |