У меня есть код, который примерно делает это внутри рабочей задачи 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 или около того) количество объектов хранилища данных?