如何用 flask 和 python 使用 http 打破无限循环?
How to break out of an infinite loop with flask and python using http?
我想使用 flask 和 http get 来打破无限循环。
from flask import Flask, render_template, jsonify
from serialtest import get_dist
app = Flask(__name__)
def test():
while True:
print('keep going!')
@app.route('/start')
def start():
return test()
@app.route('/stop')
def stop():
# stop the function test
return 'stopped'
if __name__ == "__main__":
app.run(host='0.0.0.0', port=5000, debug=True, threaded=True)
我想将 Flask 用作 http 服务器并为 Web 客户端提供服务,该客户端可以通过点击事件和 http get 启动 test(),然后通过不同的点击事件停止 test()。
对于这种特殊情况,您可以生成一个线程来处理长 运行 任务。即
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)
只要服务器本身是 运行,线程就会运行,并且在使用 before_first_request
装饰器向服务器发出任何 HTTP 请求之前启动。它检查全局变量中的 on/off 状态。对于所有情况,我不建议这样做,特别是使用全局变量来保存状态,但这应该可以完成您描述的用例。
我想使用 flask 和 http get 来打破无限循环。
from flask import Flask, render_template, jsonify
from serialtest import get_dist
app = Flask(__name__)
def test():
while True:
print('keep going!')
@app.route('/start')
def start():
return test()
@app.route('/stop')
def stop():
# stop the function test
return 'stopped'
if __name__ == "__main__":
app.run(host='0.0.0.0', port=5000, debug=True, threaded=True)
我想将 Flask 用作 http 服务器并为 Web 客户端提供服务,该客户端可以通过点击事件和 http get 启动 test(),然后通过不同的点击事件停止 test()。
对于这种特殊情况,您可以生成一个线程来处理长 运行 任务。即
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)
只要服务器本身是 运行,线程就会运行,并且在使用 before_first_request
装饰器向服务器发出任何 HTTP 请求之前启动。它检查全局变量中的 on/off 状态。对于所有情况,我不建议这样做,特别是使用全局变量来保存状态,但这应该可以完成您描述的用例。