如何删除命令行缓冲

问题描述

我正在通过 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, }

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...