我计划使用 GAE Python GCS 客户端库将大文件(大小可能从几 kB 到数百 MB)写入 GCS。我将构建内容以迭代方式写入文件。此内容存储在一个变量(例如,“X”
)中,该变量在循环的每次迭代中与更多内容连接在一起。每次迭代后,我想检查我的代码的当前内存使用情况,以便我可以停止添加更多内存。如果我继续向该变量 ("X"
) 添加更多内容,我预计我可能会达到内存限制,并且该实例甚至可能以非正常方式关闭。
一旦达到内存限制,我想停止迭代。
如何在代码中检查我的应用程序当前实例的内存使用情况?
我没有使用后端或模块。可以GAE Python Runtime API用于此?如果是,是否已弃用该 API?
示例代码
SAFE_MARGIN = 10
INSTANCE_MEMORY_LIMIT = 128
content = ""
for record in record_list:
content = content + record.description
if ((memory_usage + SAFE_MARGIN) >= INSTANCE_MEMORY_LIMIT): # CHECK IF MEMORY LIMIT IS REACHED HERE
break # STOP ADDING MORE
# WRITE FILE TO GCS HERE (value of "content" variable)
更新
由于我没有得到任何回复并且在 Google 文档中找不到任何内容,我提出了 new Feature Request with Google .
最佳答案
您可以使用 Python Runtime API 检查前端和后端实例的内存使用情况:
from google.appengine.api.runtime import memory_usage
SAFE_MARGIN = 10
INSTANCE_MEMORY_LIMIT = 128
content = ""
for record in record_list:
content = content + record.description
if ((int(memory_usage().current() + SAFE_MARGIN) >= INSTANCE_MEMORY_LIMIT): # CHECK IF MEMORY LIMIT IS REACHED HERE
break # STOP ADDING MORE
# WRITE FILE TO GCS HERE (value of "content" variable)
但是如果你经常内存不足,考虑升级实例类...
关于python - 如何从代码中检查当前实例的内存使用情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24879296/