如何在代码中检查当前实例的内存使用情况

3 投票
1 回答
758 浏览
提问于 2025-04-18 14:13

我打算使用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)

不过,如果你经常出现内存不足的情况,可以考虑升级你的实例类型...

撰写回答