Отображение значения в реальном времени в Python Flask

#python #flask #flask-socketio

#python #фляжка #фляжка-сокетио #flask #flask-socketio

Вопрос:

Я пытаюсь создать веб-приложение, которое отображает случайные числа, изменяющиеся в режиме реального времени, без необходимости обновления страницы.

Вот мой код, который работает при обновлении, но не в режиме реального времени:

 from flask import *
import random
# Init the server
app = Flask(__name__)
app.config['SECRET_KEY'] = 'mysecretkey'

# Send HTML!
@app.route('/')
def root():
    i=0
    while i < 10:
        n=random.randint(0,9)
        return str(n)
        i  = 1

# Actually Start the App
if __name__ == '__main__':
    """ Run the app. """
    app.run(host='0.0.0.0', port='8000', debug=True)
  

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

Комментарии:

1. Как только вы вызовете return , метод завершится. Для обновления страницы без обновления вам понадобится AJAX-процесс, в котором javascript вызывает сервер в фоновом режиме и обновляет страницу. Вы также можете проверить push-уведомления, но это может быть сложнее.

2. Это было бы намного проще выполнить с помощью клиентского JavaScript, чем что-либо на сервере.

Ответ №1:

Поскольку страница не перезагружается, вам нужно сделать это с помощью JavaScript, который находится на стороне клиента. Поскольку это случайные числа, вам, вероятно, не нужно выполнять вызов AJAX, при котором клиент и сервер взаимодействуют друг с другом без каких-либо перезагрузок страницы. Существует библиотека JavaScript под названием Math (документы здесь), которая имеет Random функцию. Вы могли бы сделать что-то вроде этого:

 function randomInteger(min, max) {
    return Math.floor(Math.random() * (max - min)   min
}
  

Это должно возвращать случайное целое число между min и max, включая min, но исключая max.