Openface Flask Wrapper:Flask似乎阻塞了一个线程

Bri*_*ean 8 python multithreading flask python-2.7 torch

我试图围绕openface api编写一个小瓶子REST API包装器,这样我就可以将POSTURL映像到我的烧瓶服务器并让它运行图像与分类器模型的比较

app = Flask(__name__)
@app.route('/compare', methods=['POST'])
def compare():
    # create arguments object with default classifier and neural net
    args = CompareArguments(image)
    image = request.json['image']
    args.imgs = image
    align = openface.AlignDlib(args.dlibFacePredictor)
    net = openface.TorchNeuralNet(args.networkModel, imgDim=args.imgDim, cuda=args.cuda)
    # call openface and compare image to classifier
    infer(args, align, net)
    return jsonify({'image': image}), 201

if __name__ == '__main__':
    app.run(host='0.0.0.0', threaded=True)
Run Code Online (Sandbox Code Playgroud)

如果我发布这样的图像

curl -i -H "Content-Type: application/json" -X POST http://localhost:5000/compare -d '{"image": [ "../images/examples/clapton-1.jpg"]}'
Run Code Online (Sandbox Code Playgroud)

创建了一个新的火炬进程,可以在输出中看到ps -aux,但似乎被阻止,因为它在服务器重新加载之前不会运行

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0  18184  3284 ?        Ss   18:46   0:00 /bin/bash
root       188  3.5  2.4 676060 98320 ?        S    19:35   0:00 python ./app.py
root       197 98.7  1.5 202548 62388 ?        R    19:35   0:08 /root/torch/install/bin/luajit -e package.path="/root/.luarocks/share/lua/5.1/?.lua;/root/.luarocks/share/lua/5.1/?/init.lua;/root/torch/install
root       211 39.2  1.5 202548 60908 ?        R    19:36   0:01 /root/torch/install/bin/luajit -e package.path="/root/.luarocks/share/lua/5.1/?.lua;/root/.luarocks/share/lua/5.1/?/init.lua;/root/torch/install
Run Code Online (Sandbox Code Playgroud)

似乎火炬过程被烧瓶阻塞了?我已启用线程并尝试增加进程数.我不确定是什么阻碍了这个过程?有没有什么方法可以调试Flask中的线程所需的额外配置?

小智 0

所以 Flask 的一个问题是它本身使用线程,所以如果你想让它工作,你需要关闭线程。请使用这个:

if __name__ == '__main__':
    app.run(host='0.0.0.0', threaded=False)
Run Code Online (Sandbox Code Playgroud)