zoukankan      html  css  js  c++  java
  • 后端调用python遥感功能的方式

    一、BS系统中,java实现后端开发,python实现遥感功能,利用python的flask库将遥感功能发布服务,java通过发送http请求的形式调用python的遥感功能,处理完成后python再通过调用java发布的服务,将处理结果、处理状态等信息通过http请求形式传递给java后端。

    from flask import Flask, request
    app = Flask(__name__)
    
    @app.route('/algorithm/building_detection', methods=['POST'])
    def buildingDectection():
        task_id = request.json.get("taskid", None)
        task_name = request.json.get("taskname", None)
        input_files_str = request.json.get("input_files", None)
        output_file = request.json.get("output_file", None)
    
        ......
    
        url = database_url
        data = {"taskid": task_id,
                "taskname": task_name,
                "status": status,
                "dataname": results,
                "error": res_obj.msg}
        data_ = json.dumps(data)
        res = requests.post(url=url, data=data_.encode("utf-8"))
    
    
        return dict(res_obj)

    if __name__ == '__main__':

    app.run(host='0.0.0.0', port=5000, threaded=False) # debug=False,

    thread关键字设为True时,可以接收多个http请求,并行处理;设为False时,则是排队逐个处理请求。

    注:利用flask发布服务,对应的每个功能都必须有返回值,否则提示“did not return a valid response. The function either returned None or ended without a return statement”

    二、遥感功能经常会执行较长时间,发送的http请求可能不能持续等待造成中断,以至于不能接收到处理结果。所以才会在遥感功能处理完成后,再调用后端发布的服务,通过http请求的形式将处理结果、处理状态返回给后端。

    三、通过flask发布服务,实现后端调用遥感功能,一旦发送请求后,待处理任务不可控。还有另外一种方法就是利用python去查询数据库中的任务表单,检索到待处理任务后,就获取相关参数,调用对应的遥感算法功能,处理完成后,再将处理结果和处理状态写入数据库。可以用while无线循环查询任务表单,也可以用定时任务定时查询。

    if __name__ == '__main__':
    
        while True:
            handleService = HandleTaskService()
            res = handleService.executeHandleTask()
    
            time.sleep(30)
  • 相关阅读:
    线程同步-使用CountDownEvent类
    WPF 依赖属性和附加属性
    ef core
    Razor语法
    python-爬虫
    ftp
    泛型
    结对编程作业
    第三次作业
    第二次作业
  • 原文地址:https://www.cnblogs.com/jkmlscy/p/15603085.html
Copyright © 2011-2022 走看看