【发布时间】:2012-01-15 20:55:54
【问题描述】:
我有一些代码在 GAE 工作任务中大致执行此操作:
list_of_dicts = xmlrpc_call(...)
objects_to_put = []
for row in list_of_dicts.items():
object = DatastoreModel(**row)
object.x = ...
objects_to_put.append(object)
db.put(objects_to_put)
我也试过这个:
list_of_dicts = xmlrpc_call(...)
objects_to_put = []
for row in list_of_dicts.items():
object = DatastoreModel(**row)
object.x = ...
objects_to_put.append(object)
if len(objects_to_put) > 10:
db.put(objects_to_put)
objects_to_put = []
db.put(objects_to_put)
(这个想法是每 10 个对象放置一次,以避免有一个庞大的列表)
问题始终是,这个代码块显然占用了大量内存,即使列表相对较小(约 100 个项目)并且最后一个项目中的每个项目只包含一个几个键。这里没有大块、大块字符串或其他相对较小的土豆数据结构。
是什么导致此工作器每次运行时都超出其内存配额,我如何才能有效地创建相对大量(约 100 个左右)的数据存储对象?
【问题讨论】:
-
这是请求做的唯一事情吗?你确定这是罪魁祸首?其他处理程序呢?
-
显然是这个要求,没错。我还没有完全排除该请求中出现其他问题的可能性,但这似乎不太可能。这是一个工作请求,只需拉入一些 xmlrpc,并将其转换为数据存储对象。
标签: python google-app-engine memory