Как остановить первую функцию при вызове второй?

Я вызвал первую функцию "a1" и она начинает работать в цикле, а когда я вызвал вторую функцию "a2", первая функция "a1" должна остановиться и вторая функция должна начать работать, но две функции работают параллельно. Мне нужно остановить первую функцию, когда вызывается вторая функция.

def a1(request):
    if request.method == "POST":
        add = request.POST['addition']
        while True:
            add = add + 1
            print(add)
            time.sleep(2)
    return render(request, blog/finished.html)
        
def a2(request):
    if request.method == "POST":
        check = request.POST['checking']
        while True:
            print(check)
            print("second function: ",check)
            time.sleep(2)        
    return render(request, blog/finished.html)

Эти два запроса выполняются независимо, поэтому они не могут взаимодействовать друг с другом напрямую. Вам нужно иметь какие-то средства для отслеживания состояния запроса a1. В Django вы можете сделать это с помощью таблицы базы данных, в которой будет записано состояние a1 (например, запущен). Затем a2 может обновить это состояние до "остановлено", которое a1 должен будет опросить, чтобы узнать, должен ли он прекратить выполнение или нет.

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

Вам стоит обратить внимание на Django-channels.

Это хороший учебник и документация: https://channels.readthedocs.io/en/stable/

Таким образом, несколько пользователей/страниц могут общаться с одним и тем же процессом и получать данные от него без особых проблем для веб-сервера.

Здесь используется Redis, поэтому будьте готовы к этому

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