导入 scipy.optimize 时应用程序超时

Posted

技术标签:

【中文标题】导入 scipy.optimize 时应用程序超时【英文标题】:Application times out when importing scipy.optimize 【发布时间】:2014-04-21 12:09:18 【问题描述】:

我正在尝试在 AWS Elastic Beanstalk 上启动 Python Flask 应用程序。一切正常,直到我将此行添加到我的模块之一:

import scipy.optimize

如果我添加该行,我会在错误日志中收到以下消息:

Script timed out before returning headers: application.py

我相信 SciPy 已正确安装,因为我已通过 SSH 连接到 EC2 实例并确认它在 /opt/python/run/venv/lib/python2.7/site-packages 中列出

在虚拟环境仍然激活的情况下,我还运行了一个使用 SciPy 功能的简单脚本,它运行良好。我还确认使用了 Python 2.7.5。

使用from scipy import optimize 而不是import scipy.optimize 会导致同样的错误。

有人知道是什么导致了这个错误或如何解决它吗?

【问题讨论】:

你有可以链接到的 requirements.txt 吗?你也在使用 numpy 吗? 你试过在详细模式下运行 python 吗?例如。 python -v -c 'import scipy.optimize' scipy.optimize 是否仅在处理请求时导入?在应用程序启动期间导入它会有所帮助吗?如果不是这种情况 - 目前尚不清楚超时实际来自何处。 【参考方案1】:

来自这里的一个帖子:https://groups.google.com/forum/#!topic/web2py/TmGDM35jOJ8

有人建议: 添加以下行

WSGIApplicationGroup %GLOBAL

到 apache2/conf/httpd.conf 并重启 apache。

或者,我已经成功地做到了这一点

from scipy.optimize import fmin_cg

来自弹性 beantalk 中的 wsgi 应用程序。也许具体说明您的需求会加快导入时间。

【讨论】:

AFAIK 做from scipy.optimize import fmin_cg 根本不会提高性能。 Python 仍然需要加载scipyoptimize,然后从optimize 中提取fmin_cg【参考方案2】:

这个错误是因为导入指定的模块花费的时间比环境允许的要长。您要么必须限制导入的功能数量(推荐),要么手动增加允许导入的最长时间。

【讨论】:

以上是关于导入 scipy.optimize 时应用程序超时的主要内容,如果未能解决你的问题,请参考以下文章

当您想与目标函数一起计算梯度时,如何使用 scipy.optimize.minimize 函数?

尝试 MLE 拟合 Weibull 分布时 scipy.optimize.minimize 中的 RuntimeWarning

scipy.optimize._trlib._trlib.array' 使用 pyinstaller 时没有属性 '__reduce_cython__'

scipy.optimize.fmin和scipy.optimize.minimize之间的区别

金融量化系列优化问题在构建投资组合时的应用(利用scipy.optimize.minimize构建满足条件的最优投资组合)

scipy.optimize.differential_evolution 的整数解约束?