【问题标题】:Launching a .py python script from within a cgi script从 cgi 脚本中启动 .py python 脚本
【发布时间】:2010-10-17 11:29:02
【问题描述】:

我正在尝试在运行本地 cgi 服务器时从 cgi 脚本中启动 .py 脚本。 cgi 脚本只是从 Google 地球接收一些数据并将其传递给当前正在使用 execfile('script.py') 调用的 .py 脚本,该脚本位于 cgi 脚本的末尾。

脚本运行完成,但是 script.py 包含一些打印语句,我需要在进程运行时对其进行监控。 .py 中的任何错误都会打印到 localhost 控制台窗口,并且打印语句似乎已被缓冲。

有没有办法在 localhost 控制台运行时将 .py 的输出发送到另一个 python 控制台窗口?

似乎 subprocess 模块应该做我需要的,但我只能将输出发送到变量或日志文件。这很好,只是我需要实时查看打印语句。

提前致谢

【问题讨论】:

    标签: python cgi scripting


    【解决方案1】:

    使用popen2subprocess 启动控制台,同时将输出流重定向到该控制台。

    【讨论】:

      【解决方案2】:

      你说你是从 CGI 脚本启动一个 python 脚本,但你没有指定 CGI 脚本是用什么语言编写的。因为 CGI 只是一个接口,所以不清楚 CGI 脚本是用什么语言编写的.我将假设python,因为这是最有意义的。

      最好的办法是将您的消息写入日志文件。在您的“script.py”文件中,您应该打开一个日志文件进行附加,而不是使用打印,如下所示:

      logfile = file("/var/log/my-app-log.txt", "a")
      

      那么,无论你有这样的打印语句:

      print("Starting to do step 2...")
      

      把它改成这样的 logfile.write() 语句:

      logfile.write("starting to do step 2...\n")
      

      请注意,您需要单独添加换行符,因为 file.write() 不会为您添加换行符。

      然后,您可以使用 tail 之类的命令查看脚本中发生的情况:

      tail -f /var/log/my-app-log.txt
      

      这将显示附加到您的日志文件的数据。

      【讨论】:

      • 你也可以使用 log4py 或类似的魔法。但是日志记录可以挽救生命。启动另一个脚本可能也是捕获和记录异常的好地方。
      猜你喜欢
      • 2023-03-27
      • 2023-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-16
      • 2020-08-29
      相关资源
      最近更新 更多