我的程序中有一些内存泄漏。我制作了a previous post但这段代码片段更精简了。
每个循环获取100个用户;我们有~6000名用户。
def sync_users():
api = API()#class handling api-request - no leak
maxResults = 100
page_token = ""
user = None
users = None
while True:
gc.collect()
logging.debug(memory_usage().current())
users = api.user_list(maxResults=maxResults, pageToken=page_token)
if "users" not in users:
break
for user in users["users"]:
deferred.defer(sync_user, user)
if "nextPageToken" in users:
page_token = users["nextPageToken"]
else:
break
我使用暂停的任务队列运行它,以便没有其他任务并行运行。 这是我的记忆日志。
92.703125
92.70703125
93.81640625
94.80859375
96.2109375
97.3515625
98.75
99.71484375
101.1796875
102.44140625
103.5
...
150.25390625
151.2421875
内存使用量呈线性增长,最终结果如下: 在为5586个请求提供服务后,超过128 MB的软私有内存限制(153 MB)
有时它会在内存耗尽之前完成;它不是一个无限循环。