Skip to content

Commit e7c8b9e

Browse files
authored
Merge pull request #1266 from qiboteam/cancel-disconnect
Disconnect platform when job is interrupted
2 parents db33ace + dec3133 commit e7c8b9e

File tree

1 file changed

+9
-0
lines changed

1 file changed

+9
-0
lines changed

src/qibolab/_core/platform/platform.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
"""A platform for executing quantum algorithms."""
22

3+
import signal
34
from dataclasses import dataclass, field
45
from pathlib import Path
56
from typing import Literal, Optional
@@ -75,6 +76,8 @@ class Platform:
7576

7677
def __post_init__(self):
7778
log.info("Loading platform %s", self.name)
79+
signal.signal(signal.SIGTERM, self.termination_handler)
80+
signal.signal(signal.SIGINT, self.termination_handler)
7881
if self.resonator_type is None:
7982
self.resonator_type = "3D" if self.nqubits == 1 else "2D"
8083

@@ -168,6 +171,12 @@ def disconnect(self):
168171
instrument.disconnect()
169172
self.is_connected = False
170173

174+
def termination_handler(self, signum, frame):
175+
self.disconnect()
176+
raise RuntimeError(
177+
f"Platform {self.name} disconnected because job was cancelled. Signal type: {signum}."
178+
)
179+
171180
@property
172181
def _controller(self):
173182
"""Identify controller instrument.

0 commit comments

Comments
 (0)