Flask | Python вывод скрипта не отображается непрерывно - PullRequest
0 голосов
/ 08 апреля 2020

Я пытаюсь отобразить вывод скрипта Python на веб-странице с Flask. Вывод правильный, но он ожидает завершения сценария, прежде чем что-либо отобразить на странице.

def execute():
    foldername = request.form['foldername'] 
    def inner():
      sys.stdout.flush()
      cmd = "./deploy-config.py {}".format(foldername)
      proc = subprocess.Popen(cmd, shell=True, bufsize=1, stdout=subprocess.PIPE, universal_newlines=True)

      for line in iter(proc.stdout.readline,''):
          yield line

    env = Environment(loader=FileSystemLoader('templates'))
    tmpl = env.get_template('deploy.html')
    return Response(tmpl.generate(response=inner()))

Шаблон

<h4>Please wait ...</h4>
  {% block body %}
    <body>
      {% for line in response %}
        <p0>
        {{ line }}<br>
        </p0>
      {% endfor %}
     </body>
   {% endblock %}

Как можно заставить вывод печататься непрерывно?

Спасибо

1 Ответ

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

Вы не можете таким образом. Ваш шаблон должен быть представлен полностью. Некоторые данные могут быть отправлены в ваш браузер, но они не будут отображаться, пока не будут завершены.

Вот еще несколько вопросов, подобных вашему, чтобы дать вам лучшую отправную точку;

Как отобразить результаты сценария в режиме реального времени для веб-сайта Django 1.4?

https://www.reddit.com/r/learnpython/comments/6jx5ef/how_do_i_display_real_time_output_of_a_python/

Что сводится к тому, что вы собираетесь ответить веб-страницей с JavaScript. Этот скрипт будет постоянно обновлять страницу новой информацией, которую вам нужно опубликовать sh в отдельном «представлении».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...