从作为守护程序运行的另一个python脚本运行python脚本

时间:2019-02-07 14:22:26

标签: python python-daemon

我有一个小的python文件,只输出一个字符串:

#!/usr/bin/env python
print("This is a Test")

我可以从另一个python脚本中调用此python脚本,如下所示:

subprocess.call(['python', 'myPythonFile.py'])

然后我可以在源python程序中看到“这是一个测试”。

但是我想从正在运行的守护程序中调用此脚本,如下所述:https://gist.github.com/andreif/cbb71b0498589dac93cb

当我打电话给

    subprocess.call(['python', 'myPythonFile.py'])

在MyDaemon中。运行我看不到输出。

我该怎么做?

3 个答案:

答案 0 :(得分:0)

尝试使用GrandChild函数在控制台中查看实际输出

Child

您可以在subprocess docs

中找到更多信息。

答案 1 :(得分:0)

subprocess.call可以将其输出发送到文件

tempfile = '/tmp/output.tmp' # better use mktemp

with open( tempfile, 'w') as output:
    response = subprocess.call(
         ['python', 'myPythonFile.py'], 
         stdout=output, 
         stderr=output,
    )
with open( tempfile, 'r') as output:
    # read what happened from output, and decide what to do next
    # or perhaps just feed it into your logging system

答案 2 :(得分:0)

守护进程的特征是没有控制终端,因为它与启动守护进程的对象是分离的。根据定义,守护进程未连接到任何控制台。

因此,如果该守护程序运行另一个进程:

  

我想从正在运行的守护程序中调用此脚本

然后仍然没有控制终端,并且默认情况下标准输出连接到空设备。

您需要安排守护进程将其输出放置在某处。例如,日志文件。

尝试使用the python daemon library创建守护进程的方法 并指定特定文件(例如,您打开的日志文件)以在守护进程中保持打开状态。