Flask Web服务器|停止python脚本会导致崩溃
我正在运行一个带有覆盆子Pi3B+的flask Web服务器。html网站有一些文本和两个按钮。一个按钮运行外部python脚本(不是flask python脚本),一个按钮停止python脚本 到目前为止,按下“开始”按钮可以使我的外部python脚本按我希望的方式运行。这很好用,我对此毫无怨言 我希望我的“停止”按钮停止我用“开始”按钮开始运行的外部python脚本。脚本中有一个永无止境的while循环 我已经尝试了我能想到的一切:Flask Web服务器|停止python脚本会导致崩溃,python,html,flask,raspberry-pi,raspberry-pi3,Python,Html,Flask,Raspberry Pi,Raspberry Pi3,我正在运行一个带有覆盆子Pi3B+的flask Web服务器。html网站有一些文本和两个按钮。一个按钮运行外部python脚本(不是flask python脚本),一个按钮停止python脚本 到目前为止,按下“开始”按钮可以使我的外部python脚本按我希望的方式运行。这很好用,我对此毫无怨言 我希望我的“停止”按钮停止我用“开始”按钮开始运行的外部python脚本。脚本中有一个永无止境的while循环 我已经尝试了我能想到的一切: 创建一个“正在运行”的布尔变量,使while循环仅在该变
- 创建一个“正在运行”的布尔变量,使while循环仅在该变量等于true时运行,然后使用“停止”按钮更改该变量
- 在我的外部脚本中有一个“exit()”函数,我在按下“stop”按钮时调用它
from flask import Flask, render_template
import miniMSA_Version2 as MSA
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/run')
def run_MSA():
return MSA.run()
@app.route('/stop')
def stop_msa():
return MSA.stop()
if __name__ == "__main__":
app.run(host="0.0.0.0", port=80, debug=True)
我的html代码:
<!doctype html>
<head>
<title> MSA Webpage </title>
<meta charset=utf-8>
</head>
<body>
<h1> heading </h1>
<h2> 2nd heading </h2>
<p> cool paragraph </p>
<button> <a href="/run"> Start </a> </button>
<button> <a href="/stop"> Stop </a> </button>
</body>
这个建议应该可以解决问题,但可能需要重新安排
也许是一种奇怪的方式?idk。但我认为它会起作用。。让它成为一个守护进程。允许您执行操作系统调用,如
python program.py stop
python program.py start
python program.py restart
一些相关信息
您能显示MSA.stop()后面的代码吗?我为该函数尝试了两种不同的方法。首先,我尝试使用python的exit()函数终止脚本。我尝试的第二件事是让我的while循环仅在“running”变量为true时运行,我使用stop函数将该变量设置为false。这两项工作我都不能肯定,但我认为“开始”按钮现在也不能像你想象的那样工作。一旦python进入这个循环,它就会冻结你的整个应用程序,因为它都在同一个进程中运行。@MRxParkour啊,好吧,这绝对是可能的。我不是很有经验。你有什么建议?你能解释一下你说的让它成为守护进程是什么意思吗?那是什么?我对他们不是很有经验,只是因为我需要他们。但这是一个后台过程,不与任何终端或直接用户交互相关联
python program.py stop
python program.py start
python program.py restart