Python 使用子流程启动多个游戏服务器
我想制作一个应用程序,根据数据库中的数据启动几个游戏服务器,然后在它们崩溃时重新启动它们,并在应用程序退出时停止它们 我想知道我的示例代码是好的还是应该使用另一种方法 这有什么坏处吗 到目前为止我的代码:Python 使用子流程启动多个游戏服务器,python,subprocess,Python,Subprocess,我想制作一个应用程序,根据数据库中的数据启动几个游戏服务器,然后在它们崩溃时重新启动它们,并在应用程序退出时停止它们 我想知道我的示例代码是好的还是应该使用另一种方法 这有什么坏处吗 到目前为止我的代码: import shlex import subprocess import time # replace following with a database servers = [ { "name": "Server #1", "path": "/ho
import shlex
import subprocess
import time
# replace following with a database
servers = [
{
"name": "Server #1",
"path": "/home/myuser/server1/",
"executable": "srcds_linux",
"options": "-switches -n -stuff"
},
{
"name": "Server #2",
"path": "/home/myuser/server2/",
"executable": "srcds_linux",
"options": "-some -other -switches"
}
]
if __name__ == "__main__":
processes = []
for server in servers:
print "Starting server '%s'" % server["name"]
process = subprocess.Popen(
shlex.split("./%s %s" % (server["executable"], server["options"])),
cwd=server["path"]
# stdin=...
# stdout=...
)
processes.append(process)
while True:
# check if all processes are running, else restart them..
time.sleep(1)
还有什么其他的方法来完成我想做的事情?哪一个是最好的,为什么
提前谢谢 使用
多处理
来管理您的进程池,并让目标
函数调用一个os.exec*
变量来启动实际的服务器可执行文件。然后,您可以轮询子进程的is_alive()
,以恢复任何已死亡的进程