子进程 Python 期间的日志记录



所以我创建了一个记录器,它记录到文件和控制台。但是,我需要调用子进程来运行其他 python 文件,但问题是控制台和文件仅在子进程完成后填充日志记录消息,即使我已经在 python 文件中实现了日志记录。我希望它在子过程中记录到控制台。也就是说,我能够在其他文件上运行期间看到输出。

有什么想法吗?或者有没有另一种方法可以在 Python 中运行 Python 文件?

我的子流程函数:

def _run_cmd(args_list):
"""
run linux commands
"""
# import subprocess
print('Running system command: {0}'.format(' '.join(args_list)))
proc = subprocess.Popen(args_list, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
s_output, s_err = proc.communicate()
s_return = proc.returncode
return s_return, s_output, s_err

我调用子进程的地方:

try:
s_return, s_output, s_err = _run_cmd(["python", abs_path])
if s_err:
finish_fail(config, logger)
except Exception as e:
logger.error("error", str(e))

abs_path是我要运行的文件的位置。

  1. 这里有一个与此行类似的问题。应使用log_subprocess_output记录子流程的输出。由于它是一个子进程,因此在您运行它时,它不会自动将日志打印到您的控制台或文件。这就是为什么它首先完成该过程并在过程结束时将日志存储在文件中的原因。
  2. 第二种方法是将要调用它们的 python 文件导入主 python 文件,并保持日志记录过程不变。
  3. 另一种处理方法是使用spur从主 python 文件运行 python 文件。(不太推荐的方式(刺激

谢谢。

最新更新