[Update] mainloop: Improve receiver loop to handle empty input and add stop message

[Update] osc: Refactor OSC query service initialization to run in a separate thread
This commit is contained in:
misyaguziya
2025-09-11 23:11:39 +09:00
parent 7bed19c81f
commit 4e53584cff
2 changed files with 24 additions and 16 deletions

View File

@@ -358,8 +358,11 @@ class Main:
self.main_loop = True self.main_loop = True
def receiver(self) -> None: def receiver(self) -> None:
while True: while self.main_loop:
received_data = sys.stdin.readline().strip() received_data = sys.stdin.readline().strip()
if not received_data:
time.sleep(0.1)
continue
received_data = json.loads(received_data) received_data = json.loads(received_data)
if received_data: if received_data:
@@ -441,11 +444,13 @@ if __name__ == "__main__":
main.start() main.start()
case "test": case "test":
for _ in range(100): endpoint = "/set/enable/translation"
time.sleep(0.5) result, status = main.handleRequest(endpoint)
endpoint = "/get/data/mic_host_list" printResponse(status, endpoint, result)
result, status = main.handleRequest(endpoint) endpoint = "/run/send_message_box"
printResponse(status, endpoint, result) data = {"id":"123456", "message":"テスト"}
result, status = main.handleRequest(endpoint, data)
printResponse(status, endpoint, result)
case "test_all": case "test_all":
import time import time
@@ -647,4 +652,5 @@ if __name__ == "__main__":
result, status = main.handleRequest(endpoint, data) result, status = main.handleRequest(endpoint, data)
printResponse(status, endpoint, result) printResponse(status, endpoint, result)
time.sleep(0.5) time.sleep(0.5)
main.stop()

View File

@@ -118,15 +118,17 @@ class OSCHandler:
self.osc_server = osc_server.ThreadingOSCUDPServer((self.osc_server_ip_address, self.osc_server_port), osc_dispatcher) self.osc_server = osc_server.ThreadingOSCUDPServer((self.osc_server_ip_address, self.osc_server_port), osc_dispatcher)
Thread(target=self.oscServerServe, daemon=True).start() Thread(target=self.oscServerServe, daemon=True).start()
while True: def startOSCQueryService():
try: while True:
self.osc_query_service = OSCQueryService(self.osc_query_service_name, self.http_port, self.osc_server_port) try:
for filter, target in self.dict_filter_and_target.items(): self.osc_query_service = OSCQueryService(self.osc_query_service_name, self.http_port, self.osc_server_port)
self.osc_query_service.advertise_endpoint(filter, access=OSCAccess.READWRITE_VALUE) for filter, target in self.dict_filter_and_target.items():
break self.osc_query_service.advertise_endpoint(filter, access=OSCAccess.READWRITE_VALUE)
except Exception: break
errorLogging() except Exception:
sleep(1) errorLogging()
sleep(1)
Thread(target=startOSCQueryService, daemon=True).start()
def oscServerServe(self) -> None: def oscServerServe(self) -> None:
# ポーリング間隔を長くして2秒から10秒にCPUの使用率を削減 # ポーリング間隔を長くして2秒から10秒にCPUの使用率を削減