В этом конкретном случае вы можете создать поток, который обрабатывает долгосрочную задачу.т. е.
import threading
import time
from flask import Flask, render_template, jsonify
from serialtest import get_dist
app = Flask(__name__)
light_on = False
@app.before_first_request
def light_thread():
def run():
global light_on
while light_on:
print("keep going!")
time.sleep(1)
thread = threading.Thread(target=run)
thread.start()
@app.route('/start')
def start():
# stop the function test
light_on = True
return "started"
@app.route('/stop')
def stop():
light_on = False
return 'stopped'
if __name__ == "__main__":
app.run(host='0.0.0.0', port=5000, debug=True, threaded=True)
Поток работает до тех пор, пока работает сам сервер, и запускается до того, как к серверу поступит любой HTTP-запрос с использованием декоратора before_first_request
.Он проверяет состояние включения / выключения в глобальной переменной.Я бы не рекомендовал это, в частности использовать глобальную переменную для сохранения состояния, для всех сценариев, но это должно выполнить описанный вами вариант использования.