zvepb
@zvepb

Как заблокировать повторное выполнение subprocess.Popen() в веб приложении на Flask?

Я использую такой URL в простом фласк приложении. При нажатии кнопки из формы html, отправляется POST запрос и
запускается скрипт log_script.
@app.route("/log", methods=["GET", "POST"])
def log():
    if request.method == 'POST':
        subprocess.Popen([python_exe, log_script])
        redirect("/")
    return render_template('log.html)

Как я могу заблокировать кнопку или возможность запуска скрипта повторно? То есть при нажатии по кнопке и отправке POST запроса я должен быть уверен, что пока скрипт log_script не выполниться, я не смогу запустить его снова.
  • Вопрос задан
  • 66 просмотров
Решения вопроса 1
zvepb
@zvepb Автор вопроса
Спасибо за помощь. Решил поднимать флаг выполнения, что в принципе работает так, как я ожидал :

@app.route("/log", methods=["GET", "POST"])
def log():
    flag = False
    if request.method == 'POST' and not flag:
        redirect("/")
        proc = subprocess.Popen([python_exe, log_script])
        while proc.poll() is None:
             flag = True
        flag - False     
    return render_template('log.html)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
AlexNest
@AlexNest Куратор тега Python
Работаю с Python/Django
Полагаю, оптимальным решением будет использовать Singleton
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы