fix: jupyter_exec usa run_in_executor para execute_cell
Evita bloquear el event loop asyncio ejecutando execute_cell (operación síncrona con websocket) en un thread executor. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -8,6 +8,7 @@ Tres modos de ejecucion:
|
|||||||
|
|
||||||
import asyncio
|
import asyncio
|
||||||
import json
|
import json
|
||||||
|
from functools import partial
|
||||||
from typing import Any
|
from typing import Any
|
||||||
from urllib.error import URLError
|
from urllib.error import URLError
|
||||||
from urllib.request import Request, urlopen
|
from urllib.request import Request, urlopen
|
||||||
@@ -106,7 +107,10 @@ async def _async_append_execute(
|
|||||||
|
|
||||||
with KernelClient(server_url=server_url, token=token, kernel_id=kernel_id) as kernel:
|
with KernelClient(server_url=server_url, token=token, kernel_id=kernel_id) as kernel:
|
||||||
cell_index = nb.add_code_cell(code)
|
cell_index = nb.add_code_cell(code)
|
||||||
result = nb.execute_cell(cell_index, kernel)
|
loop = asyncio.get_event_loop()
|
||||||
|
result = await loop.run_in_executor(
|
||||||
|
None, partial(nb.execute_cell, cell_index, kernel),
|
||||||
|
)
|
||||||
|
|
||||||
# Let Y.js propagate changes to other clients (browser)
|
# Let Y.js propagate changes to other clients (browser)
|
||||||
await asyncio.sleep(2)
|
await asyncio.sleep(2)
|
||||||
@@ -138,7 +142,10 @@ async def _async_execute_cell(
|
|||||||
await nb.wait_until_synced()
|
await nb.wait_until_synced()
|
||||||
|
|
||||||
with KernelClient(server_url=server_url, token=token, kernel_id=kernel_id) as kernel:
|
with KernelClient(server_url=server_url, token=token, kernel_id=kernel_id) as kernel:
|
||||||
result = nb.execute_cell(cell_index, kernel)
|
loop = asyncio.get_event_loop()
|
||||||
|
result = await loop.run_in_executor(
|
||||||
|
None, partial(nb.execute_cell, cell_index, kernel),
|
||||||
|
)
|
||||||
|
|
||||||
await asyncio.sleep(2)
|
await asyncio.sleep(2)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user