Как остановить первую функцию при вызове второй?
Я вызвал первую функцию "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, поэтому будьте готовы к этому