在BaseHTTPServer中启动守护程序进程

时间:2014-04-16 15:29:47

标签: python linux bash basehttpserver

为了让服务台能够重启Oracle实例,我们正在尝试实现一个小型python web服务器,它将启动一个启动Oracle实例的shell脚本。

代码完成并启动实例但存在问题:实例已连接到Web服务器,因此在实例停止之前,浏览器的缓冲区不会关闭,并且存在{{1}进程侦听Web服务器端口。

我尝试使用以下命令启动脚本:

ora_pmon_INSTANCE

process = os.system("/home/oracle/scripts/webservice/prueba.sh TFINAN")

但它也是一样的。

我还尝试使用守护进程启动脚本(使用redhat的init脚本中的守护进程函数)。该脚本以相同的结果启动Oracle实例。

这是我的代码:

process = subprocess.Popen(["/home/oracle/scripts/webservice/prueba.sh", "TFINAN"], shell=False, stdout=subprocess.PIPE)`

你们有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

您的问题与HTTP服务器无关。从Python代码中控制Oracle守护程序似乎存在一般性问题。

首先尝试编写一个简单的python脚本,它可以满足您的需求。

我的猜测是,您尝试从守护程序控制脚本读取输出时遇到问题。

另请参阅Popen.communicate()以获取命令的输出。其他选项可以是调用subrocess.call()

有很多教程可以从Python调用系统命令,例如this one

除了与Python相关的纯粹问题之外,您可能会遇到权限问题 - 如果您的用户运行脚本/ HTTP服务器不允许调用oracle控制脚本,那么您在Linux添加时会遇到另一个问题(可能有解决方案)那个用户变成了sudoers)。

解决调用脚本的问题后,很容易让它在HTTP服务器内部工作。