【问题标题】:Minimalistic app getting "OSError: [Errno 12] Cannot allocate memory" on deploy - why?部署时出现“OSError:[Errno 12] 无法分配内存”的简约应用程序 - 为什么?
【发布时间】:2019-08-23 18:17:05
【问题描述】:

我正在使用 Python 3.7 运行时设置新的 Google App Engine。但是,即使设置非常少,它也会失败。

app.yaml 很简单:

runtime: python37

main.py 就这么简单:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return 'Hello World!'

最后 requirements.txt 很简单:

Flask>=1.0.2
torch==1.0.1
Flask-Compress>=1.4.0
numpy>=1.16.2

我预计此设置在发出 gcloud app deploy 时会起作用,但我收到了一个错误 - 这是 Google Cloud Build 上错误日志的最后几行:

(log lines before this omitted as they're on INFO level)
Traceback (most recent call last):
File "/usr/lib/python2.7/runpy.py", line 174, in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
exec code in run_globals
File "/usr/local/bin/ftl.par/__main__.py", line 65, in <module>
File "/usr/local/bin/ftl.par/__main__.py", line 54, in main
File "/usr/local/bin/ftl.par/__main__/ftl/python/builder.py", line 114, in Build
File "/usr/local/bin/ftl.par/__main__/ftl/python/layer_builder.py", line 153, in BuildLayer
File "/usr/local/bin/ftl.par/__main__/ftl/common/single_layer_image.py", line 60, in GetCacheKey
File "/usr/local/bin/ftl.par/__main__/ftl/python/layer_builder.py", line 109, in GetCacheKeyRaw
File "/usr/local/bin/ftl.par/__main__/ftl/python/layer_builder.py", line 332, in GetCacheKeyRaw
File "/usr/local/bin/ftl.par/__main__/ftl/python/layer_builder.py", line 346, in _python_version
File "/usr/lib/python2.7/subprocess.py", line 394, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 938, in _execute_child
self.pid = os.fork()
OSError: [Errno 12] Cannot allocate memory

为什么会失败?当它开始使用python 3.7时,它在这里使用python 2.7是否正常?似乎找不到任何有关此特定错误的文档 - 我试图增加 app.yaml 文件中的内存,但没有任何运气。

【问题讨论】:

  • Python 2.7 在幕后被用于为您的应用构建映像,这无关紧要。在安装 torch 依赖项时,我能够重现这一点,但这不应该失败。我已经在内部提交了一个问题。如果你现在可以避免安装torch,我会推荐它。

标签: python google-app-engine pytorch python-3.7


【解决方案1】:

更新

我已经编辑了我的答案以避免混淆,因为我最初是错的。

Dustin Ingram Apr 2 at 17:50 的评论所指定。问题确实出在 App Engine 上,而不是库上。

因此,我开通了public issue tracker 供您跟进。您可以对此进行标记并发表评论,以表明您受此影响,以便您在那里获得有关进度的更新。

【讨论】:

  • 这是不正确的。 if __name__ == '__main__': 语句在 App Engine 上不成立,这些行不是必需的。此外,在导入之前,未导入的其他依赖项不会增加内存开销。
  • 您提到的行将在本地启用调试,但这不是我想要的。关于torch - 你是对的,它没有。问题是我非常需要它来达到我的目的。不过谢谢!
  • @zniwalla,您必须联系 torch 库的开发人员并指出该库存在问题,我发现此问题与 App Engine 无关。祝你好运!
  • 问题确实出在 App Engine 上,而不是 torch 库,特别是 see my comment here
  • 哦,我真的很抱歉我没有注意到。那么在这种情况下,是的,现在必须排除火炬库。我也开通了public issue tracker,供您跟进。您可以对此进行标记并发表评论,以表明您受此影响,以便您在那里获得有关进度的更新。
猜你喜欢
  • 2015-05-04
  • 1970-01-01
  • 1970-01-01
  • 2010-11-24
  • 2013-08-01
  • 1970-01-01
  • 2010-11-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多