У меня flask приложение работает в режиме thread true .
if __name__ == '__main__':
setup.check_director()
web_app.secret = "image-service"
web_app.run(host='0.0.0.0', port=8084, debug=True, threaded=True)
Я запускаю mrcnn (https://github.com/matterport/Mask_RCNN) задача, использующая вызов API, класс Predictor выглядит следующим образом:
class Predictor(object):
def __init__(self, config=None, weights=WEIGHTS_PATH, device=DEVICE):
self.weights=weights
self.config = ElementConfig() if config is None else config
# self.el = Element_linker()
self.logger.info("Loading Mask R-CNN model")
print("Loading Mask R-CNN model and weights")
start = time.time()
self._graph = tf.Graph()
with self._graph.as_default():
self.model = modellib.MaskRCNN(mode="inference", model_dir=MODEL_DIR, config=self.config)
self.logger.info("Loading saved weights from {}".format(weights))
self.model.load_weights(weights, by_name=True)
self.init_g = tf.global_variables_initializer()
self.init_l = tf.local_variables_initializer()
print("Loading completed in %s seconds" % ((time.time() - start)))
....
....
....
def predict(self):
with tf.Session(graph=self._graph) as _session:
_session.run(self.init_g)
_session.run(self.init_l)
results = _session.run(self.model.detect([image], verbose=0))
....
....
....
....
Код работает нормально, если одновременно выполняется один вызов API. Когда у меня несколько ударов по API одновременно, код выдает ошибку как:
ValueError: Tensor Tensor("Placeholder:0", shape=(7, 7, 3, 64), dtype=float32) is not an element of this graph.
Подробный журнал: https://gist.github.com/amandalmia14/70b8b3fb13bef8f545d9963bd609f2f2
Я также пытался использовать разные способы организации сеансов и графиков. Также перепробовал все решения, представленные на странице проблем mrcnn github, но ничего не помогло.
Есть ли проблема с многопоточностью или подходом, упомянутым выше?