Вы можете выполнить Polling , который каждый раз отправляет HTTP-запрос на ваш сервер для получения последних данных, или вы можете использовать Websocket / Socket.io , который позволяет вам передавать данные со своего сервера в клиентское приложение (в данном случае это приложение Vue).
С (коротким) опросом вы просто:
- Создайте простой HTTP-сервер в python (или вы можете использовать framework / microframework, например Flask или FastAPI , что может сэкономить вам несколько раз)
- Создайте конечную точку на своем python HTTP-сервере, которая отправляет json данные
- Отправляйте HTTP-запрос из вашего Vue приложения каждый раз на Python сервер, чтобы получить data, код будет выглядеть примерно так:
let duration = 10000; // 10s
// Your HTTP endpoint
let url = "http://pythonserveriporurl.com/something"
// run every 10s
setInterval( () => {
const xhr = new XMLHttpRequest();
xhr.open("GET", url);
xhr.onreadystatechange = function() {
// If request is finished with status code 200
if (this.readyState === XMLHttpRequest.DONE && this.status === 200) {
const data = JSON.parse(this.responseText);
// do something with the data
}
};
}, duration);
вы также можете выполнять длинный опрос, который работает немного иначе, чем короткий опрос, подробнее здесь
С websocket / socket.io , вам необходимо:
- Создать websocket или сервер socket.io в вашем приложении python, который генерирует событие каждый раз, когда ваши данные
.json
изменяются - Подключается из вашего приложения Vue к сокету . io (прокрутите вниз, чтобы увидеть пример клиента) / websocket server, затем прослушайте испущенное событие с вашего сервера socket.io / websocket, получите данные и обновите их на вашем Vue компоненте
Какой выбрать?
Это зависит от того, как вы выполняете «отслеживание» в приложении python, вы также используете короткий опрос, который вы каждую минуту отправляете запрос на внешний ресурс для обновления данных json? или вы используете другой способ обновления данных json только тогда, когда фактические данные меняются, то есть в реальном времени?
Если вы используете метод, аналогичный короткому опросу в вашем приложении python, то я не думаю, что использование websocket / socket.io принесет вам большую пользу, если только данные не меняются каждый раз при загрузке это из внешнего ресурса, и вы излучаете его только с вашего сервера, когда происходит фактическое изменение данных. Если вы обновляете данные json в реальном времени, вы можете рассмотреть возможность использования websocket / socket.io, поскольку опрос может использовать большую пропускную способность, особенно если вы делаете это с очень короткой задержкой.
И то, и другое сделать несложно, но я думаю, что большинство людей будут более знакомы с концепцией HTTP, чем с websocket / socket.io, так что вам будет проще