Возможно ли динамическое обновление отображаемого шаблона в 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.loads не работает с двоичным JSON, отправленным AngularJS в Python
  • Преобразовать csv в структуру дерева JSON?
  • Как создать JSON-файл с вложенными записями из таблицы плоских данных?
  • DeserializationError: объект «NoneType» не имеет атрибута «_meta», используя Django loaddata
  • Лучший способ получить значения переменных из текстового файла - Python - Json
  • Как вернуть объект json в конечных точках Google
  • Как правильно использовать механику для очистки сайтов AJAX
  • Объекты запроса Python не являются сериализуемыми
  • Преобразование схемы JSON в класс python
  • Как я могу использовать Python для преобразования bsondump MongoDB в JSON?
  • Как импортировать json из файла в облачном хранилище в Bigquery
  • Python - лучший язык программирования в мире.