Мой сайт работает на локальном хосте (127.0.0.1:5000).
Цель состоит в том, чтобы каждую секунду обновлять шаблон html из внешнего процесса, в то время как другой процесс запускает приложение flask. Я пытаюсь сделать это без очереди сообщений, например Redis, если это возможно. Я создал несколько простых файлов, иллюстрирующих мою проблему:
Бэкенд:
Код: Выделить всё
import multiprocessing
from flask import Flask, render_template
from flask_socketio import SocketIO
import time
app = Flask(__name__)
# Declared outside of frontend so that other processes can emit from it
socketio = SocketIO(app)
# The process function to run the frontend software
def runHTML():
@app.route('/')
def index():
return render_template('index.html')
@socketio.on('connect')
def handle_connect():
print('Client connected')
@socketio.on('getdata')
def handle_message(data):
print("sending data to frontend")
socketio.emit('update', "update for frontend")
socketio.run(app)
if __name__ == "__main__":
# Create another process to allow clients to connect to the html script
frontendProcess = multiprocessing.Process(target=runHTML)
frontendProcess.start()
counter = 0
while(1):
counter += 1
socketio.emit('update', str(counter)) # Send data to frontend
print("sending a " + str(counter))
time.sleep(1)
Код: Выделить всё
Text to update
Update
var text = document.getElementById("updatethis");
var button1 = document.getElementById("button_1");
// Socket to communicate with frontend
var socket = io();
socket.on('update', function(data) {
console.log('Received data to display...');
text.innerHTML = "Number: " +data + "\n";
});
function requestData() {
socket.emit('getdata', '1');
}
В идеале это должно быть сделано без очереди сообщений. Если это невозможно, то мы будем очень признательны за предложенную модификацию этого примера, в том числе и одну.
Подробнее здесь: https://stackoverflow.com/questions/798 ... sage-queue
Мобильная версия