Windows python脚本运行服务器并继续

时间:2015-02-11 09:26:03

标签: python windows subprocess popen

我正在处理我的python脚本以启动服务器,可能在后台或不同的进程中,然后在杀死已启动的服务器之前进一步处理。

一旦剩余的处理结束,就杀掉已启动的服务器。

例如

server_cmd = 'launch_server.exe -source '+ inputfile
print server_cmd
cmd_pid = subprocess.Popen(server_cmd).pid
...
...
... #Continue doing some processing
cmd_pid.terminate() # Once the processing is done, terminate the server

启动服务器后脚本无法继续运行,因为服务器可能在无限循环中运行,正在侦听请求。是否有一种很好的方法可以在后台发送此进程,以便它不会出现命令行输入。

我正在使用Python 2.7.8

2 个答案:

答案 0 :(得分:2)

启动服务器命令后脚本无法继续,这很奇怪。在subprocess模块中,Popen启动另一个子进程,而父进程(您的脚本)应该继续。

但是在您的代码中已经存在错误:cmd_pidint对象,并且没有terminate方法。您应该使用subprocess.Popen对象来调用terminate方法。

答案 1 :(得分:2)

进行小改动解决了问题

server_proc = subprocess.Popen(server_cmd, stdout = subprocess.PIPE

server_proc.terminate()

感谢Xu在终止时进行更正。