Skip to content

Commit f8bb9bf

Browse files
committed
Correcciones en para la Version 1.1.4 de EduBot
1 parent 432ff67 commit f8bb9bf

2 files changed

Lines changed: 127 additions & 54 deletions

File tree

core/executor.py

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,14 @@
1313
import time
1414
from typing import Dict, Any
1515

16-
# Use a Manager so queues and shared state can be passed across the worker process.
17-
_multiprocessing_manager = None
18-
input_queue = None
19-
gui_queue = None
20-
wait_flag = None
16+
if multiprocessing.current_process().name == 'MainProcess':
17+
input_queue = multiprocessing.Queue()
18+
gui_queue = multiprocessing.Queue()
19+
wait_flag = multiprocessing.Value('b', False)
20+
else:
21+
input_queue = None
22+
gui_queue = None
23+
wait_flag = None
2124

2225
current_process = None
2326
current_process_lock = threading.Lock()
@@ -37,15 +40,7 @@ def _global_log_worker():
3740
pass
3841
gevent.sleep(0.05)
3942

40-
def _init_multiprocessing():
41-
global _multiprocessing_manager, input_queue, gui_queue, wait_flag
42-
if _multiprocessing_manager is None:
43-
_multiprocessing_manager = multiprocessing.Manager()
44-
input_queue = _multiprocessing_manager.Queue()
45-
gui_queue = _multiprocessing_manager.Queue()
46-
wait_flag = _multiprocessing_manager.Value('b', False)
47-
eel.spawn(_global_log_worker)
48-
43+
# Iniciamos el worker del log solo en el proceso principal
4944
if multiprocessing.current_process().name == 'MainProcess':
5045
eel.spawn(_global_log_worker)
5146

@@ -143,10 +138,9 @@ def kill_execution() -> bool:
143138
# EJECUTOR PRINCIPAL
144139
def execute_user_code(code: str, timeout: int = 5) -> Dict[str, Any]:
145140
global current_process
146-
_init_multiprocessing()
147141
result = {'success': False, 'output': '', 'error': ''}
148142

149-
if input_queue is None or gui_queue is None or wait_flag is None or _multiprocessing_manager is None:
143+
if input_queue is None or gui_queue is None or wait_flag is None:
150144
return {'success': False, 'output': '', 'error': 'El entorno de ejecución no está inicializado correctamente.'}
151145

152146
if current_process is not None and current_process.is_alive():
@@ -158,7 +152,8 @@ def execute_user_code(code: str, timeout: int = 5) -> Dict[str, Any]:
158152
except queue.Empty:
159153
break
160154

161-
result_queue = _multiprocessing_manager.Queue()
155+
# Usamos la cola nativa en lugar del manager
156+
result_queue = multiprocessing.Queue()
162157
process = multiprocessing.Process(
163158
target=_execution_target,
164159
args=(result_queue, input_queue, gui_queue, wait_flag, code)

0 commit comments

Comments
 (0)