Сохранить Flask Работать без веб-страницы в браузере - PullRequest
0 голосов
/ 17 июня 2020

У меня есть локальный flask сервер, который обрабатывает сенсорные данные. Он получает значения температуры и регулирует свет, когда температура превышает определенный порог. Пока это работает только тогда, когда один клиент держит браузер с этой страницей открытой. Было бы хорошо, если бы сервер обновлял значения температуры и регулировал свет, не открывая постоянно браузер. Как заставить его работать в фоновом режиме?

temperture = 0
threshold_temp = 0

def read_temp():
    #read temperature values

server = Flask(__name__)
socketio = SocketIO(server)
app = dash.Dash(__name__, server = server, url_base_pathname="/dash/")

@server.route('/_stuff')
def stuff():
    global threshold_temp
    temperature = read_temp()
    if temperature >= threshold_temp:
            #change light
    else:
            #do not change light
    return jsonify(result = temperature)

#Change Threshold
@socketio.on('message')
def handleMessage(msg):
    global threshold_temp
    threshold_temp = float(msg)
    send(msg, broadcast=True)
    f = open("Threshold.txt", "w")
    f.write(msg)
    f.close()

#Adjust Threshold on Connection of Client
@socketio.on('connect')
def on_connect():
    global threshold_temp
    f = open("Threshold.txt", "r")
    threshold_temp = float(f.read())
    send(threshold_temp, broadcast=True)

@server.route('/')
def index():
    return render_template('index.html')

if __name__ == '__main__':
    socketio.run(server, host='0.0.0.0', port=80, debug=False)

1 Ответ

1 голос
/ 17 июня 2020

Похоже, вы хотите запустить фоновую задачу; брокеры сообщений - хороший способ справиться с подобными проблемами. python -rq и сельдерей - хорошие варианты для этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...