Merge branch 'fix-issue-50-logging-and-attributeerror' into develop

This commit is contained in:
misyaguziya
2025-06-24 15:10:04 +09:00
3 changed files with 28 additions and 8 deletions

View File

@@ -90,8 +90,10 @@ class OSCHandler:
# エラー発生時にbrowserをリセットして次回再初期化
if self.browser is not None:
try:
self.browser.zc.close()
self.browser.browser.cancel()
if hasattr(self.browser, 'zc') and self.browser.zc is not None:
self.browser.zc.close()
if hasattr(self.browser, 'browser') and self.browser.browser is not None:
self.browser.browser.cancel()
except Exception:
pass
self.browser = None
@@ -140,8 +142,10 @@ class OSCHandler:
# browserがある場合はクリーンアップ
if self.browser is not None:
try:
self.browser.zc.close()
self.browser.browser.cancel()
if hasattr(self.browser, 'zc') and self.browser.zc is not None:
self.browser.zc.close()
if hasattr(self.browser, 'browser') and self.browser.browser is not None:
self.browser.browser.cancel()
except Exception:
pass
self.browser = None

View File

@@ -138,7 +138,8 @@ class WebSocketServer:
finally:
# 停止指示が出たらすべての接続を閉じ、イベントループを終了
self._loop.run_until_complete(self._shutdown())
self._loop.close()
if self._loop is not None:
self._loop.close()
async def _shutdown(self):
"""

View File

@@ -115,9 +115,24 @@ def printResponse(status:int, endpoint:str, result:Any=None) -> None:
"endpoint": endpoint,
"result": result,
}
process_logger.info(response)
response = json.dumps(response)
print(response, flush=True)
process_logger.info(response) # Log the unserialized response
try:
serialized_response = json.dumps(response)
except OSError as e:
errorLogging() # Log the full traceback of the OSError
process_logger.error(f"Problematic response object before json.dumps: {response}")
process_logger.error(f"OSError during json.dumps: {e}")
# Optionally, print a generic error JSON to stdout if needed, or re-raise
# For now, we'll print a simple error message to stdout as a fallback
error_json = json.dumps({
"status": 500,
"endpoint": endpoint,
"result": {"error": "Failed to serialize response due to OSError", "details": str(e)}
})
print(error_json, flush=True)
else:
print(serialized_response, flush=True)
error_logger = None
def errorLogging() -> None: