データベースからのデータに基づいて複数のゲーム サーバーを起動し、クラッシュした場合はそれらを再起動し、アプリケーションの終了時にそれらを停止するアプリケーションを作成したいと考えています。
サンプル コードが適切かどうか、または別のアプローチを使用する必要があるかどうか疑問に思っています。
これには何か欠点がありますか?
これまでの私のコード:
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)
私がやろうとしていることを達成するために他にどのような方法がありますか? どれが最高で、その理由は何ですか?
前もって感謝します!