Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 当在flask应用程序中使用uwsgi部署时,keras预测陷入困境_Python_Tensorflow_Flask_Keras_Uwsgi - Fatal编程技术网

Python 当在flask应用程序中使用uwsgi部署时,keras预测陷入困境

Python 当在flask应用程序中使用uwsgi部署时,keras预测陷入困境,python,tensorflow,flask,keras,uwsgi,Python,Tensorflow,Flask,Keras,Uwsgi,我有一个keras模型,它在单元测试和本地flask应用程序(flask run)中工作得非常好。然而,当我在uwsgi中启动flask应用程序时,它从第二个请求开始就被卡住了,杀死了整个应用程序。这是因为uwsgi产生了多个进程吗?我该如何避开这个问题?谢谢。我也有同样的问题,这可能不是理想的解决办法。 但我相信这是一个在多个进程中运行的Keras问题 我正在用lazy apps运行uWSGI=true uwsgi --http 0.0.0.0:5000 --wsgi-file your_fl

我有一个keras模型,它在单元测试和本地flask应用程序(flask run)中工作得非常好。然而,当我在uwsgi中启动flask应用程序时,它从第二个请求开始就被卡住了,杀死了整个应用程序。这是因为uwsgi产生了多个进程吗?我该如何避开这个问题?谢谢。

我也有同样的问题,这可能不是理想的解决办法。 但我相信这是一个在多个进程中运行的Keras问题

我正在用lazy apps运行uWSGI=true

uwsgi --http 0.0.0.0:5000 --wsgi-file your_flask_server.py --callable app --processes 2 --threads 2 --stats 127.0.0.1:9191 --lazy-apps
注意:通过延迟加载应用程序,这将消耗更多的内存,比如两倍的内存,因为它将在每个线程/进程中再次加载整个应用程序

以下是一些使用完整链接: ,


我有一个类似的问题:在docker环境中的flask应用程序中,我们会发现神经网络会在第一次预测之后挂起预测。为了解决这个问题,我创建了一个神经网络类

def __init__(self):
    self.session = tf.Session()
    self.graph = tf.get_default_graph()
    self.model = self.__load_model()
    with self.graph.as_default():
        with self.session.as_default():
            logging.info("neural network initialised")
最后3行似乎正确地初始化了图形和会话,但由于某些原因,会话没有在正确的位置发生。我的预测功能是:

def predict(self, x):
    with self.graph.as_default():
        with self.session.as_default():
            y = self.model.predict(x)
    return y

这似乎已经停止了挂起(我不知道为什么我需要一个会话和一个图表,但我在调试时添加了这两个,现在我害怕删除任何一个)

我能够在multiprocessing.lock的帮助下得到我的模型预测

来自多处理导入锁的

类锁定预测器:
定义初始化(自):
self.mutex=Lock()
self.model=load_model()
def预测(自我,输入):
使用self.mutex:
返回self.model.predict(输入)
灵感来自这里:。 然而,当我有两个相互竞争的模型时,解决方案失败了。我尝试应用此处描述的Manager解决方案,但失败


一个合适的解决方案是基于建议的redis队列,这在上是推荐的。

您应该发布负责模型的代码,代码被卡住了。由于服务器上的内存分配问题,我也遇到了同样的情况。你查过日志了吗?如果它抛出任何类型的警告,那么也请发布它们。确保您将keras模型保存在内存中,而不是为每个请求重新加载它。我仍然存在此问题。你找到解决方案了吗?它也解决了我(类似)的问题,但我得到了一个新的问题:我的不同烧瓶路线偶尔返回400次,显然是随机的…非常感谢Manoj。这仍然证明对Tensorflow 2.1.1非常有用。