Как показать ход выполнения оператора выполнения скрипта python оператором в режиме реального времени в браузере с Flask framework? - PullRequest
4 голосов
/ 07 января 2020

Я пытаюсь преобразовать сценарий командной строки, написанный на python, в веб-приложение.

Я собираюсь разработать веб-приложение, используя python и flask. Пользователь предоставит некоторую информацию на веб-странице и отправит ее. Затем входные данные будут переданы в качестве аргументов функции, записанной в python (в основном, старый скрипт). Эта функция будет делать много вещей. Поскольку функция выполняется, я хотел бы показать статус выполнения функции (выполненных шагов) на веб-странице в режиме реального времени.

Например - если пользователь вводит значения для полей - radius, length, breadth, base, height на веб-странице и нажимает кнопку submit, запускается функция с именем calculate_area(radius, length, breadth, base, height), и приложение должно периодически отправлять область для окружность, прямоугольник и треугольник один за другим с некоторой задержкой между вычислениями каждой области. Например,

   Calculating area of circle ...
   Area of circle is - xxx
   Calculating area of rectangle ...
   Area of rectangle is - yyy
   Calculating area of triangle ...
   Area of triangle is - zzz

Может кто-нибудь указать мне, что может помочь достичь этого? Заранее спасибо.

1 Ответ

0 голосов
/ 08 января 2020

@ metatoaster направил вас в правильном направлении: Flask Приложение: обновить индикатор выполнения во время выполнения функции Вместо того, чтобы возвращать целое число как прогресс, вы можете вернуть строку (например, «Расчет площади круга. .. ')

На вашей веб-странице вам нужно будет опросить прогресс с помощью JavaScript / JQuery / AJAX и добавить его к HTML div или textarea, как показано в примере ,

const logarea = $('#logarea');
setInterval(update_progress, 500); // Polling every 500ms

function update_progress() {
    $.get('progress/' + task_id, function (progress) {    
        if (logarea.val().indexOf(progress) === -1) {
            logarea.val(logarea.val() + progress + '\n');
        }
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...