tensorflow如何忽略未定义的标志

Lin*_*ang 8 python flask gunicorn tensorflow

我在一个简单的flask服务器中包装我的tensorflow模型,我正在gunicornflask服务器添加wsgi .当我运行gunicorn并试图发送一个请求来调用我已经导入到烧录服务器的火车功能时,我从命令行参数解析得到一个错误:

absl.flags._exceptions.UnrecognizedFlagError:未知的命令行标志'b'

我知道当gunicorn绑定地址参数时会传递这个标志,因为我没有为tensorflow命名为'b'的标志.所以我的问题是tensorflow如何忽略这些tf.app.run()函数不会抱怨的未定义标志?

仅供参考,这是我的服务器结构:

wsgi.py:

from simple_server import app

if __name__ == "__main__":
    app.run()
Run Code Online (Sandbox Code Playgroud)

simple_server.py:

from my_tf_model import my_train

@app.route('/call_train', methods=['POST'])
def call_train():
    if request.method == 'POST':
        training_data = request.json
        my_train(training_data, param2)  
        return('Trained!')
Run Code Online (Sandbox Code Playgroud)

my_tf_model.py:

tf.app.flags.DEFINE_integer('model_version',1, 'version number of the model.')
tf.app.flags.DEFINE_string('work_dir', '', 'Working directory.')
FLAGS = tf.app.flags.FLAGS

def my_train(param1, param2):
    # Train Algorithm
    export_path_base = FlAGS.work_dir
    # Exporting model code

def main(argv):

    my_train(param1, param2)

if __name__ == "__main__":
    tf.app.run()
Run Code Online (Sandbox Code Playgroud)

更新:

我使用的是tensorflow 1.5.xpython 3.6.0,我用gunicorn是命令:

gunicorn -b 0.0.0.0:5000 -t 30 wsgi:app

Lin*_*ang 3

我通过在张量流模型中定义这些标志解决了我的问题:my_tf_model.py

tf.app.flags.DEFINE_string('bind', '', 'Server address')
tf.app.flags.DEFINE_integer('timeout', 30, 'Server timeout')
Run Code Online (Sandbox Code Playgroud)

然后更改我的gunicorn命令行以使用双破折号样式命令行:

gunicorn --bind 0.0.0.0:5000 --timeout 30 wsgi:app
Run Code Online (Sandbox Code Playgroud)

但我认为应该有其他方法而不是这种黑客来解决全局使用的标志。