【发布时间】:2018-06-19 19:32:33
【问题描述】:
这是我第一次在这里提出问题,所以我将尝试描述性。我对 python 和 tensorflow 比较陌生,并且一直在专门为一个项目学习它。
我目前正在使用 tensorflow 服务和带有 wsgi 的烧瓶来部署一个 tensorflow 模型。我一直在关注这个架构:https://github.com/Vetal1977/tf_serving_flask_app
我在port=9000 上运行tensorflow_model_server。
我知道tensorflow_model_server 正在工作,因为当我从命令行执行tensorflow_serving_client.py 时,我得到了预期的响应。我已经在每个用户帐户上测试了这个命令行执行。
同样,我知道 Flask + WSGI 正在工作,因为我可以看到 log.info 点在 apache 错误日志中下降,因为它通过脚本运行。如果我在它到达相关行之前返回它,它就可以正常工作。
但是,当应用程序使用 Flask + WSGI 执行时,它会挂在 this line: result = stub.Predict.future(request, 5.0) # 5 seconds (https://github.com/Vetal1977/tf_serving_flask_app/blob/master/api/gan/logic/tf_serving_client.py#L70)
我可以看到它挂起,因为我监控 top 和 tail -f error.log 并看到同一个 apache 进程坐在那里,直到它被杀死或 apache 重新启动。
我真的坚持这样一个事实,即它在通过命令行执行时有效,但在 Flask + WSGI 运行时无效。任何人都可以提供建议或指出正确的方向吗?我是否走上了正确的道路?任何帮助将不胜感激。
编辑:我已将最小代码上传到 github 存储库:https://github.com/raymondtri/client-test 以及需要烧瓶、wsgi、tensorflow 和 tensorflow-serving 的最小设置。
提前致谢,
雷
【问题讨论】:
-
也许使用 Flask + WSGI 会更慢,您是否尝试将其增加到 5 秒以上?尝试 30.0 而不是 5.0
-
是的,我尝试增加时间。 Minimal、Complete 和 Verifiable - 完成后,这已更新为包含指向包含最少代码的公共 github 存储库的链接
-
你是如何配置 mod_wsgi 的?你用的是守护模式吗?您是否强制 mod_wsgi 在主 Python 解释器上下文中运行您的应用程序?请参阅modwsgi.readthedocs.io/en/develop/user-guides/… 了解有关避免某些 Python 包挂起的配置。
-
遇到了同样的问题,但使用的是 gunicorn + eventlet。
标签: tensorflow flask mod-wsgi grpc tensorflow-serving