Вы не должны вызывать подпроцесс так, как вы делаете это наиболее фундаментально, потому что вы создаете дыру в безопасности.Команду можно передать конечной точке, которую вы описываете, сделав вызов конечной точки с чем-то вроде /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
Youможет потребоваться переместить некоторые данные из "D:/LH_data/LH_tensorflow/tensorflow-for-poets-2/"
в папку вашего проекта, чтобы иметь возможность импортировать их в приложение фляги.