问题描述
我正在通过 doit 任务启动一个工具,该任务可以选择性地以交互方式驱动。与此结合,我正在使用“--verbosity 2”运行,以便将此工具的命令行发送到 STDOUT。问题是当此工具的界面处于活动状态时,命令行会被缓冲,这会阻止对正在键入的内容进行即时反馈。在输入 return 之前,不会看到每一行。我将以下内容添加到 dodo.py 作为解决方案:
from doit.action import CmdAction
def task_progress():
return {
'actions': [CmdAction("progress_bar",buffering=1)],}
失败并显示以下消息: .进步 /bin/sh: progress_bar: 命令未找到 任务错误 - 任务 ID:进度 命令错误:'progress_bar' 返回 127
是否有更好的解决方案来消除向此工具输入命令时的延迟,或者我是否误读了文档?
解决方法
这个问题的一个更好的解决方案是使用 Interactive:
from doit.tools import Interactive
定义 task_interact(): """运行 some_tool""" 返回 { 'actions': [Interactive('some_tool -log logs/your_uid -some_arg')],'冗长':2, }