Python的_GET请求没有为Oracle启动命令完成BaseHTTPRequestHandler

时间:2017-01-10 12:23:41

标签: python oracle

作为devops的一部分,我正在构建一个工具来启动/停止与应用程序在同一服务器上托管的数据库。

在UI中,我正在发出启动和停止服务器的GET请求。

请求到来后,我使用Python subprocess模块执行命令。

我能够成功停止并开始。但是,在'start'情况下,Python请求未完成,并且响应永远不会返回到浏览器。从浏览器点击GET请求会发生同样的情况;即使显示响应,它仍继续在浏览器选项卡上显示加载图标。

这是我的开始和停止代码:

两个多行变量:

shutdown_cmd="""
    sqlplus '/ as sysdba' <<!
    shutdown immediate;
    !
    """



startup_cmd="""
    sqlplus '/ as sysdba' <<!
    startup;
    exit;
    !
    """

使用Python中的subprocess执行上述命令的代码:

call(shutdown_cmd, shell = True)

call(startup_cmd, shell = True)

对于shutdown命令,执行以下代码并按如下方式完成请求:

SQL> Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> 
SQL> SQL> Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
<machine_name>- - [10/Jan/2017 07:15:45] "GET /favicon.ico HTTP/1.1" 200 -

如果启动命令代码被执行并且请求按如下方式完成:

SQL> ORACLE instance started.

Total System Global Area  275615744 bytes
Fixed Size                  2252384 bytes
Variable Size             218104224 bytes
Database Buffers           50331648 bytes
Redo Buffers                4927488 bytes
Database mounted.
Database opened.
SQL> Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

我看到关闭的差异是在请求完成时触发了一些favicon.ico请求。对于启动,它会卡在最后一行,并且不会触发favicon.ico request

*

  

总结一下,当浏览器向python托管的HTTP发出GET请求时   服务器,如果返回oracle响应的shutdown命令,   但是如果启动命令oracle响应不返回   虽然命令是执行和数据库已启动,但服务器   继续等待回应。

*

有没有人有任何想法如何解决这个问题?

0 个答案:

没有答案