从flask_restful调用python脚本

时间:2018-06-13 08:49:08

标签: python flask-restful

我想用flask_restful调用python脚本,然后按照下面的链接来实现 https://dev.to/aaahmedaa/create-restapi-for-your-python-scripts-using-flask-with-15-line-of-code-10ml

我从命令提示符执行命令python app.py并将图像作为输入从浏览器传递,如下所示 http://localhost:5000/ImageClassification/image1.jpg

我的输出为{" data":null}

假设从cnn_classification.py脚本获得如下所示的输出,请告诉我错误的位置。

cnn_classification.py:

    import os
    import subprocess
    os.getcwd()
    os.chdir("D:/LH_data/LH_tensorflow/tensorflow-for-poets-2/")

    def lh_image_classification(input_image):
        subprocess.call(['python', '-m', 'scripts.label_image', '--graph=tf_files/optimized_graph.pb', '--image=' + input_image])

app.py:

    import cnn_classification
    from flask import Flask, request
    from flask_restful import Resource, Api
    from sys import argv

    app = Flask(__name__)
    api = Api(app)

    #input_image = argv[1]
    class imageClassification(Resource):
          def get(self, input_image):
              return {'data': cnn_classification.lh_image_classification(input_image)}

    api.add_resource(imageClassification, '/ImageClassification/<input_image>')

    if __name__ == '__main__':
         app.run()

1 个答案:

答案 0 :(得分:0)

您不应该以最基本的方式调用subproccess,因为您正在创建安全漏洞。通过使用0或更差的方式调用端点,可以将命令传递给您描述的端点。

首先,使用脚本而不是使用子进程。细节取决于/ImageClassification/image.png;sudo rm -rf /内部的内容,但我想它应该看起来像

scripts.label_image

这假设脚本import scripts.label_image from flask import Flask, request from flask_restful import Resource, Api app = Flask(__name__) api = Api(app) class ImageClassification(Resource): def get(self, input_image): result = label_image( graph="tf_files/optimized_graph.pb", image=input_image ) return {'data': result} api.add_resource(ImageClassification, '/ImageClassification/<input_image>') if __name__ == '__main__': app.run() 是表单

的函数
label_image

您可能需要将一些内容从def label_image(graph, image): #... does stuff return result 移到项目文件夹中,以便能够将其导入到烧瓶应用程序中。