Возможно ли динамическое обновление отображаемого шаблона в Flask, на стороне сервера?

В настоящее время у меня есть веб-сервер Flask, который извлекает данные из JSON API с помощью встроенного объекта запросов.

Например:

def get_data(): response = requests.get("http://myhost/jsonapi") ... return response @main.route("/", methods=["GET"]) def index(): return render_template("index.html", response=response) 

Проблема здесь в том, что, естественно, метод GET запускается только один раз, когда вызывается первый get_data. Чтобы обновить данные, я должен остановить и перезапустить сервер wsgi Flask. Я пробовал обертывать различные части кода за время цикла True / sleep, но это не позволяет werkzeug загружать страницу.

Каков самый Pythonic способ динамически получить данные, которые я хочу, не перезагружая страницу или перезагружая сервер?

One Solution collect form web for “Возможно ли динамическое обновление отображаемого шаблона в Flask, на стороне сервера?”

Вы обсуждаете, пожалуй, две разные проблемы.

  1. Предположим, проблема заключается в том, что вы вызываете динамический источник данных, get_data() , только один раз и сохраняете его (статическое) значение в глобальном response . Этот одноразовый вызов не отображается, но предположим, что он находится где-то в вашем коде. Затем, если вы хотите обновить страницу ( / ), чтобы получать обновления, вы можете:

     @main.route("/", methods=['GET']) def index(): return render_template("index.html", response=get_data()) 

    Это позволит получать свежие данные при каждой загрузке страницы.

  2. Затем в конце вашего вопроса вы спрашиваете, как «ПОЛУЧИТЬ данные, которые я хочу, без необходимости перезагрузки страницы или перезапуска сервера». Это совершенно другая проблема. Вам нужно будет использовать запросы AJAX или WebSocket в вашем коде. Существует довольно много учебников о том, как это сделать (например, этот ), которые вы можете найти через Googling «Flask AJAX». Но для этого потребуется вызов JavaScript AJAX. Я рекомендую найти примеры того, как это делается путем поиска «Flask AJAX jQuery», поскольку jQuery будет абстрагироваться и упрощать то, что вам нужно делать на стороне клиента. Или, если вы хотите использовать WebSockets для соединения с более низкой задержкой между вашей веб-страницей, это также возможно; найдите примеры (например, как этот ).

  • Декодирование JSON из Reddit API в Python с использованием PRAW
  • jsoncpp (Linux) - инструкция для нас простых смертных?
  • JSON: TypeError: Decimal ('34 .3 ') не является сериализуемым JSON
  • Преобразование типа numpy в python
  • Python: Как бы вы сохранили простой файл настроек / конфигурации?
  • Pyparsing: анализ полных JSON вложенных данных открытого текста в список
  • Модуль JSON для python 2.4?
  • Ошибка _corrupt_record при чтении JSON-файла в Spark
  •  
    Interesting Posts for Van-Lav
    Python - лучший язык программирования в мире.