用python写一个服务并注释,开放一个接口并注明接口地址,启动后,前端访问该接口时提示输“请输入堆场号”,前端要输入堆场号数字,后将数字赋予dch,并将dch作为参数,后启动我的automaster.py的程序,程序接收参数后开始运行,另用代码说明我的程序如何接收参数。运行后,将运行产生的信息发送给前端。且运行过程中显示工作状态为:工作中,结束运行后显示:建模工作结束
时间: 2023-06-14 22:06:34 浏览: 92
以下是Python代码示例:
```python
from flask import Flask, request, jsonify
import subprocess
app = Flask(__name__)
@app.route('/api/run-model', methods=['POST'])
def run_model():
dch = request.json['dch']
if not dch:
return jsonify({'message': '请输入堆场号'})
# 启动automaster.py,并传入堆场号作为参数
cmd = ['python', 'automaster.py', str(dch)]
result = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
# 获取automaster.py运行产生的信息
output = result.stdout.decode('utf-8')
error = result.stderr.decode('utf-8')
if error:
return jsonify({'message': error})
else:
return jsonify({'message': '建模工作结束', 'output': output})
if __name__ == '__main__':
app.run()
```
注释说明:
- `from flask import Flask, request, jsonify`:导入Flask框架和相关模块。
- `app = Flask(__name__)`:创建Flask应用实例。
- `@app.route('/api/run-model', methods=['POST'])`:创建一个接口地址为`/api/run-model`,请求方法为`POST`,即前端需要用POST请求访问该接口。
- `def run_model():`:定义接口对应的函数`run_model()`。
- `dch = request.json['dch']`:从前端POST请求的JSON数据中获取堆场号数字。
- `if not dch:`:如果没有输入堆场号,则返回一个JSON格式的错误信息。
- `cmd = ['python', 'automaster.py', str(dch)]`:定义启动automaster.py的命令行。
- `result = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)`:启动automaster.py程序,并获取运行结果。
- `output = result.stdout.decode('utf-8')`:获取automaster.py运行产生的标准输出信息。
- `error = result.stderr.decode('utf-8')`:获取automaster.py运行产生的标准错误信息。
- `if error:`:如果运行过程中有错误产生,则返回一个JSON格式的错误信息。
- `else:`:如果运行成功,则返回一个JSON格式的成功信息和automaster.py运行产生的输出信息。
- `if __name__ == '__main__':`:如果当前文件作为主程序运行,则启动Flask应用。
接口地址为`/api/run-model`,前端需要用POST请求访问该接口,并传入一个JSON数据,例如`{"dch":123}`。
阅读全文