MINOR - Only timeout on main threads (#18341)

This commit is contained in:
Pere Miquel Brull 2024-10-21 15:18:33 +02:00 committed by GitHub
parent c7a466b674
commit 5e80ad9fc3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -18,6 +18,7 @@ import inspect
import os
import platform
import signal
import threading
from typing import Callable
from metadata.utils.constants import TEN_MIN
@ -47,7 +48,11 @@ def timeout(seconds: int = TEN_MIN) -> Callable:
def decorator(fn):
@functools.wraps(fn)
def inner(*args, **kwargs):
if platform.system() != "Windows": # SIGALRM not supported on Windows
# SIGALRM is not supported on Windows or sub-threads
if (
platform.system() != "Windows"
and threading.current_thread() == threading.main_thread()
):
signal.signal(signal.SIGALRM, _handle_timeout)
signal.alarm(seconds)
try: