Возврат флакона перед выполнением перезагрузки
По причинам, которые я хочу, чтобы вызвать перезагрузку Raspberry Pi с помощью API REST.
Мой 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")
код работает отлично. Но из-за перезагрузки возврат не будет отправлен (поскольку система, очевидно, перезагружается).
Есть ли способ вызвать перезагрузку какой-то асинхронный с задержкой в пару миллисекунд, который позволяет вернуть некоторое значение (в моем случае просто пользовательский "ack") до фактической перезагрузки?
1 ответ
Решение
Попробуйте использовать 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")