Skip to content

Commit 67c985e

Browse files
committed
Close capture and db resources
1 parent e608ced commit 67c985e

1 file changed

Lines changed: 19 additions & 2 deletions

File tree

src/pytask_parallel/execute.py

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -256,10 +256,27 @@ def pytask_execute_task(session: Session, task: PTask) -> Future[WrapperResult]:
256256

257257

258258
@hookimpl
259-
def pytask_unconfigure() -> None:
260-
"""Clean up the parallel executor."""
259+
def pytask_unconfigure(session: Session) -> None:
260+
"""Clean up the parallel executor and release per-session resources."""
261+
# Ensure global state is reset between runs.
261262
registry.reset()
262263

264+
# The installed pytask version does not yet release capture/database resources
265+
# on unconfigure, so do it here to avoid leaking file descriptors across runs.
266+
from _pytask import database_utils # noqa: PLC0415
267+
from _pytask.capture import CaptureManager # noqa: PLC0415
268+
269+
capman = session.config["pm"].get_plugin("capturemanager")
270+
if isinstance(capman, CaptureManager):
271+
capman.stop_capturing()
272+
273+
engine = getattr(database_utils, "_ENGINE", None)
274+
if engine is None:
275+
engine = getattr(database_utils.DatabaseSession, "kw", {}).get("bind")
276+
if engine is not None:
277+
engine.dispose()
278+
database_utils.DatabaseSession.configure(bind=None)
279+
263280

264281
def _update_carry_over_products(
265282
task: PTask, carry_over_products: PyTree[CarryOverPath | PythonNode | None] | None

0 commit comments

Comments
 (0)