Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法打印与子流程一起运行的python脚本的输出_Python_Subprocess - Fatal编程技术网

无法打印与子流程一起运行的python脚本的输出

无法打印与子流程一起运行的python脚本的输出,python,subprocess,Python,Subprocess,我尝试测试服务器,并希望在测试结束时在这里打印输出 class TestHandler(TestCase): def setUp(self): cmd = [ 'python', '-m', 'server', '-f', write_to_path, '--debug' ] self.server = Popen(cmd, universal_newlines=Tr

我尝试测试服务器,并希望在测试结束时在这里打印输出

class TestHandler(TestCase):

    def setUp(self):
        cmd = [
            'python', '-m', 'server',
            '-f', write_to_path,
            '--debug'
        ]
        self.server = Popen(cmd, universal_newlines=True, cwd=root_dir_path,
                            stdout=PIPE, stderr=PIPE)

        # also tried this, did not help
        # cmd = [
        #     'python -m server --debug -f ' + write_to_path
        # ]
        # self.server = Popen(cmd, shell=True, universal_newlines=True, cwd=root_dir_path,
        #                     stdout=PIPE, stderr=PIPE)

    def tearDown(self):
        try:
            outs, errs = self.server.communicate(timeout=2)
            print(outs, errs)
        except TimeoutExpired:
            print("kill")
            self.server.kill()
            outs, errs = self.server.communicate()
            print(outs, errs) # empty output here

    def testWordWithoutParent(self):
        pass
当我运行它时,stdout和err是空的,但执行了服务器代码(我用pdb在server/\uu main\uuuu.py中测试了它的main函数)


我在stackowerflow上尝试了将近3个小时的答案,但没有一个有效,我放弃了。

终止信号处理不当

变成

server = None

def close_server(signum, frame):
    debug("Signal handler called with signal %s", signum)
    if server:
        server.server_close()
        sys.exit()

server = HTTPServer(config.server_address, Handler)
signal.signal(signal.SIGINT, close_server)
signal.signal(signal.SIGTERM, close_server)
debug('http server is running...listening on port %s', config.port)
server.serve_forever()
try:
    httpd = HTTPServer(config.server_address, Handler)
    debug('http server is running...listening on port %s', config.port)
    httpd.serve_forever()
except KeyboardInterrupt:
    httpd.server_close()
    sys.exit(0)
finally:
    httpd.socket.close()
    httpd.server_close()
    debug("finnaly")
server = None

def close_server(signum, frame):
    debug("Signal handler called with signal %s", signum)
    if server:
        server.server_close()
        sys.exit()

server = HTTPServer(config.server_address, Handler)
signal.signal(signal.SIGINT, close_server)
signal.signal(signal.SIGTERM, close_server)
debug('http server is running...listening on port %s', config.port)
server.serve_forever()