Можно ли завершить процесс обучения ИИ в django?

Я разрабатываю веб-страницу, используя Django. В админке сайта есть раздел под названием: Train Model, здесь есть кнопка "Train Model", эта кнопка запускает скрипт python, который имеет симуляцию процесса обучения, это просто sleep(30) на данный момент, в то время как время сна происходит пользователь должен иметь возможность отменить этот процесс, в случае если пользователь забыл что-то, возможно ли это сделать? Я пробовал некоторые вещи, но журналы показывают, что даже если я нажимаю кнопку отмены, процесс "тренировки" продолжается до тех пор, пока он не завершится.


import time
import multiprocessing
import os
import signal
import logging

# Global variables to manage the training state
is_training = False
training_process = None
training_pid = None  # Store the PID of the training process
stop_event = None
logger = logging.getLogger()


def train_task(stop_event):
    """simulates the training task with stop event support"""
    for i in range(30):
        if stop_event.is_set():
            print("Training cancelled.")
            return
        time.sleep(1)
    print("Training done.")

def train_model():
    global is_training, training_process, stop_event

    # If training is already in progress, return immediately
    if is_training:
        print("Training already in progress...")
        return "Training already in progress"

    #mark the start of the training
    is_training = True
    stop_event = multiprocessing.Event() #creates a stop event
    print("Training started...")

    #start the training process with stop event support
    training_process = multiprocessing.Process(target = train_task, args=(stop_event,))
    training_process.start()
    #stores the pid of the process
    training_pid = training_process.pid

    return "Training started."

def cancel_training_process():
    global training_pid, is_training, stop_event

    if is_training and training_pid:
        try:
            os.kill(training_pid, signal.SIGTERM) #sends the SIGTERM signal to the process
            is_training = False #resets the training state
            training_pid = None
            stop_event.set() # stops the training event
            return "Training cancelled."
        except OSError as e:
            return f"Error while cancelling the process: {e}"

        return "No training in progress"






def check_training_status():
    global is_training
    if is_training:
        return "Training in progress"
    else:
        return "No training in progress"

Это функции, которые имитируют обучение и пытаются отменить процесс.

Есть какие-нибудь советы на этот счет? В будущем, обучение будет совершенно другим скриптом, который будет брать данные из базы данных и обучать ИИ, но такой скрипт еще не написан, это просто я пытаюсь реализовать то, что меня попросили сделать хехехе

Я пробовал различные решения, ни одно из них не работает, когда я хочу отменить процесс, он все равно запускается до конца, я уверен, что может быть решение, но это определенно вне моих знаний на данный момент

Вернуться на верх