用python写一个服务并注释,开放一个接口并注明接口地址,启动后,前端访问该接口时会输入堆场号,后将其赋值给dch,并将dch作为参数,后启动我的automaster.py的程序,automaster.py程序接收参数后开始运行。另用代码说明我的程序如何接收参数。程序运行时,将运行产生的信息发送给前端。且运行过程中显示工作状态为:工作中,结束运行后显示:建模工作结束
时间: 2023-06-14 18:06:02 浏览: 44
下面是一个使用 Flask 框架实现的示例代码,注释及说明见代码注释:
```python
from flask import Flask, request, jsonify
import subprocess
app = Flask(__name__)
# 定义接口地址为 /run_model,采用 POST 请求方式
@app.route('/run_model', methods=['POST'])
def run_model():
# 获取前端传入的参数 dch
dch = request.form.get('dch')
# 启动 automaster.py 程序,并将 dch 作为参数传入
result = subprocess.run(['python3', 'automaster.py', dch], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
# 获取运行产生的信息
output = result.stdout.decode('utf-8')
# 返回结果给前端
return jsonify({'status': 'success', 'output': output})
# 在程序结束时显示 '建模工作结束'
@app.after_request
def after_request(response):
print('建模工作结束')
return response
if __name__ == '__main__':
# 启动 Flask 应用程序
app.run()
```
这里用 subprocess 模块启动 automaster.py 程序,并将 dch 参数作为列表传入 subprocess.run() 函数中的第一个参数,从而实现了程序接收参数的功能。
前端访问接口时,可以使用如下代码:
```javascript
// 假设堆场号为 '123'
fetch('/run_model', {
method: 'POST',
body: new FormData().append('dch', '123')
})
.then(response => response.json())
.then(data => console.log(data));
```
这里使用了 fetch API 发起了一个 POST 请求,将堆场号 '123' 作为 FormData 的参数传入。请求成功后,返回的数据包含一个 status 字段,表示接口调用是否成功,以及一个 output 字段,表示 automaster.py 程序运行产生的信息。