如何在代码中检查当前实例的内存使用情况
我打算使用GAE Python GCS客户端库,将一些比较大的文件(大小可能从几千字节到几百兆字节不等)写入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)
更新
因为我没有收到任何回复,也在谷歌文档中找不到相关信息,所以我向谷歌提交了一个新的功能请求。
1 个回答
1
你可以使用Python运行时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)
不过,如果你经常出现内存不足的情况,可以考虑升级你的实例类型...