Flask框架與TensorFlow不兼容的問題
因爲主線程是子線程的關係,以及flask使用了gevent異步,導致在其他線程沒有主線程裏的模型,最終導致識別報錯。
解決方法
解決的方法也很簡單
第一種:
取消代碼中的gevent
# from gevent import monkey;
# monkey.patch_all()
還有 啓動時候取消gevent
gunicorn -w ${WORKER} -t 100 -k gevent -b 0.0.0.0:${PORT} server:app
gunicorn -w ${WORKER} -t 100 -b 0.0.0.0:${PORT} server:app # 去掉gevent
就可以了
第二種:
在load_model 之後 加上
model._make_predict_function()
參見:https://github.com/keras-team/keras/issues/6462
這段代碼即可。
搞定!