Introduce signal_exit()

This commit is contained in:
henryruhs
2025-06-12 23:40:40 +02:00
parent cee560e89a
commit 17a94c0604
3 changed files with 13 additions and 4 deletions

View File

@@ -2,7 +2,6 @@ import itertools
import shutil import shutil
import signal import signal
import sys import sys
from functools import partial
from time import time from time import time
import numpy import numpy
@@ -12,7 +11,7 @@ from facefusion.args import apply_args, collect_job_args, reduce_job_args, reduc
from facefusion.common_helper import get_first from facefusion.common_helper import get_first
from facefusion.content_analyser import analyse_image, analyse_video from facefusion.content_analyser import analyse_image, analyse_video
from facefusion.download import conditional_download_hashes, conditional_download_sources from facefusion.download import conditional_download_hashes, conditional_download_sources
from facefusion.exit_helper import graceful_exit, hard_exit from facefusion.exit_helper import signal_exit, hard_exit
from facefusion.face_analyser import get_average_face, get_many_faces, get_one_face from facefusion.face_analyser import get_average_face, get_many_faces, get_one_face
from facefusion.face_selector import sort_and_filter_faces from facefusion.face_selector import sort_and_filter_faces
from facefusion.face_store import append_reference_face, clear_reference_faces, get_reference_faces from facefusion.face_store import append_reference_face, clear_reference_faces, get_reference_faces
@@ -32,7 +31,7 @@ from facefusion.vision import pack_resolution, read_image, read_static_images, r
def cli() -> None: def cli() -> None:
if pre_check(): if pre_check():
signal.signal(signal.SIGINT, partial(graceful_exit, 0)) signal.signal(signal.SIGINT, signal_exit)
program = create_program() program = create_program()
if validate_args(program): if validate_args(program):

View File

@@ -1,6 +1,7 @@
import signal import signal
import sys import sys
from time import sleep from time import sleep
from types import FrameType
from facefusion import process_manager, state_manager from facefusion import process_manager, state_manager
from facefusion.temp_helper import clear_temp_directory from facefusion.temp_helper import clear_temp_directory
@@ -12,6 +13,10 @@ def hard_exit(error_code : ErrorCode) -> None:
sys.exit(error_code) sys.exit(error_code)
def signal_exit(signum : int, frame : FrameType):
graceful_exit(0)
def graceful_exit(error_code : ErrorCode) -> None: def graceful_exit(error_code : ErrorCode) -> None:
process_manager.stop() process_manager.stop()
while process_manager.is_processing(): while process_manager.is_processing():

View File

@@ -5,6 +5,7 @@ import subprocess
import sys import sys
from argparse import ArgumentParser, HelpFormatter from argparse import ArgumentParser, HelpFormatter
from functools import partial from functools import partial
from types import FrameType
from facefusion import metadata, wording from facefusion import metadata, wording
from facefusion.common_helper import is_linux, is_windows from facefusion.common_helper import is_linux, is_windows
@@ -23,7 +24,7 @@ if is_linux():
def cli() -> None: def cli() -> None:
signal.signal(signal.SIGINT, partial(sys.exit, 0)) signal.signal(signal.SIGINT, signal_exit)
program = ArgumentParser(formatter_class = partial(HelpFormatter, max_help_position = 50)) program = ArgumentParser(formatter_class = partial(HelpFormatter, max_help_position = 50))
program.add_argument('--onnxruntime', help = wording.get('help.install_dependency').format(dependency = 'onnxruntime'), choices = ONNXRUNTIME_SET.keys(), required = True) program.add_argument('--onnxruntime', help = wording.get('help.install_dependency').format(dependency = 'onnxruntime'), choices = ONNXRUNTIME_SET.keys(), required = True)
program.add_argument('--skip-conda', help = wording.get('help.skip_conda'), action = 'store_true') program.add_argument('--skip-conda', help = wording.get('help.skip_conda'), action = 'store_true')
@@ -31,6 +32,10 @@ def cli() -> None:
run(program) run(program)
def signal_exit(signum : int, frame : FrameType):
sys.exit(0)
def run(program : ArgumentParser) -> None: def run(program : ArgumentParser) -> None:
args = program.parse_args() args = program.parse_args()
has_conda = 'CONDA_PREFIX' in os.environ has_conda = 'CONDA_PREFIX' in os.environ