python flask return 重启前执行

python flask return prior execution of reboot

出于某些原因,我想使用 REST api 来触发 raspberry pi 的重启。

我的 REST api 在 python flask 中编码如下:

from flask import Flask
from flask import jsonify
import subprocess

app = Flask(__name__)

@app.route('/api/reboot')
def reboot():
    subprocess.call("/sbin/reboot")
    return jsonify(triggered='reboot')

if __name__ == '__main__':
    app.run(debug=True,host="0.0.0.0")

代码运行良好。但由于重启,return 将不会发送(因为系统显然正在重启)。

有没有一种方法可以延迟几毫秒来触发某种异步重启,允许 return 一些值(在我的例子中只是一个自定义 'ack')实际重启?

尝试 threading.Timer:

例如:

from flask import Flask
from flask import jsonify
import subprocess
import threading

app = Flask(__name__)

def _reboot():
    subprocess.call("/sbin/reboot")

@app.route('/api/reboot')
def reboot():
    t = threading.Timer(1, _reboot)
    t.start()
    return jsonify(triggered='reboot')

if __name__ == '__main__':
    app.run(debug=True,host="0.0.0.0")