无法在 uwsgi + nginx 部署下使用 tensorflow 模型

我正在尝试在 tensorflow + flask + uWSGI 中使用MTCNN部署人脸检测服务。我的部署基于这个 docker并添加了这个自定义uwsgi.ini:


[uwsgi]

module = main

callable = app

enable-threads = true

cheaper = 2

processes = 16

threads = 16

http-timeout = 60

但是当我尝试使用我刚刚构建的这个 docker 图像进行人脸检测时,我总是得到504 Gateway Time-out. 实际上,当我深入挖掘时,我注意到代码在此 session.run 行中运行良好:


    for op_name in data_dict:

        with tf.variable_scope(op_name, reuse=True):

            for param_name, data in iteritems(data_dict[op_name]):

                try:

                    var = tf.get_variable(param_name)

                    session.run(var.assign(data))

                except ValueError:

                    if not ignore_missing:

                        raise

一开始,我以为是uwsgi worker下线程的问题,于是我增加了进程数和线程数,但没有成功。


当我使用 Flask 调试器运行相同的代码时,它运行得很好并且在不到一秒的时间内处理了图像。所以这不是代码的问题,而是配置或这些工具组合的问题。


POPMUISE
浏览 167回答 3
3回答

撒科打诨

您还需要设置cheaper = 0. 这是我的 uwsgi,它正在工作。[uwsgi]module = maincallable = appmaster = false processes = 1cheaper = 0

绝地无双

使用master = false和processes = 1用于 uwsgi 配置。有一个已知问题,即tensorflow 在多进程设置中挂起。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python