1+ from gevent import monkey
2+ monkey .patch_all ()
3+
14import subprocess
25import sys
36import os
@@ -117,20 +120,26 @@ def init_socketio(app):
117120# ownserver_mc_process -> mc.ownserver_proc
118121# ownserver_web_process -> 新しく追加
119122ownserver_web_process = None
120- log_thread = None
123+ log_thread_stdout = None
124+ log_thread_stderr = None
121125config = mc .load_config ()
122126
123127# --- Helper Functions ---
124- def log_streamer (process ):
125- """サーバープロセスの出力を読み取り 、WebSocket経由で送信する"""
128+ def log_streamer_stdout (process ):
129+ """サーバープロセスのstdoutを読み取り 、WebSocket経由で送信する"""
126130 try :
127- # stdoutとstderrの両方をリアルタイムで読み取る
128131 for line in iter (process .stdout .readline , '' ):
129132 socketio .emit ('console_output' , {'log' : line })
133+ except Exception as e :
134+ print (f"Log streaming (stdout) error: { e } " )
135+
136+ def log_streamer_stderr (process ):
137+ """サーバープロセスのstderrを読み取り、WebSocket経由で送信する"""
138+ try :
130139 for line in iter (process .stderr .readline , '' ):
131140 socketio .emit ('console_output' , {'log' : f"[STDERR] { line } " })
132141 except Exception as e :
133- print (f"Log streaming error: { e } " )
142+ print (f"Log streaming (stderr) error: { e } " )
134143
135144def get_server_status ():
136145 """サーバーの現在の状態を返す"""
@@ -153,7 +162,7 @@ def status():
153162@app .route ('/api/start' , methods = ['POST' ])
154163def start_server_route ():
155164 """Minecraftサーバーを起動する"""
156- global log_thread
165+ global log_thread_stdout , log_thread_stderr
157166 if get_server_status () == "Running" :
158167 return jsonify (status = "Already running" ), 400
159168
@@ -171,7 +180,8 @@ def start_server_route():
171180 proc = mc .start_server (config , xmx = xmx , xms = xms , world_type = world_type )
172181 if proc :
173182 # ログをWebUIにストリーミングするスレッドを開始
174- log_thread = socketio .start_background_task (target = log_streamer , process = mc .server_proc )
183+ log_thread_stdout = socketio .start_background_task (target = log_streamer_stdout , process = mc .server_proc )
184+ log_thread_stderr = socketio .start_background_task (target = log_streamer_stderr , process = mc .server_proc )
175185 socketio .emit ('status_update' , {'status' : 'Running' })
176186 return jsonify (status = "Started" )
177187 else :
0 commit comments