Я пишу простой сервис, чтобы взять данные из нескольких источников, объединить их и использовать клиент Google API для отправки его в Лист Google. Легкий peasy работает хорошо, данные не такие большие.Google App Engine и Google Таблицы превышают допустимый предел памяти
Проблема заключается в том, что вызов .spreadsheets() после построения службы api (то есть build('sheets', 'v4', http=auth).spreadsheets()
) вызывает скачок памяти примерно в 30 мегабайт (я сделал некоторое профилирование, чтобы выделить, где была выделена память). Когда они развернуты в GAE, эти пики прилипают в течение длинных промежутков времени (иногда по часам), ползучая вверх и после нескольких запросов вызывают ошибку GAE «Превышение мягкой частной памяти».
Я использую memcache для документа обнаружения и urlfetch для захвата данных, но это единственные другие службы, которые я использую.
Я пробовал сборку мусора вручную, изменяя threadafe в app.yaml, даже такие вещи, как изменение точки, в которой вызывается .spreadsheets(), и не может встряхнуть эту проблему. Также возможно, что я просто неправильно понимаю что-то о архитектуре GAE, но я знаю, что шип вызван вызовом .spreadsheets(), и я ничего не храню в локальных кешах.
Есть ли способ либо: 1) уменьшить размер всплеска памяти из вызовов .spreadsheets() или 2) сохранить всплески в памяти (или, предпочтительно, сделать оба). Ниже приведено очень упрощенное описание, чтобы дать представление о вызовах API и обработчике запросов, при необходимости я могу предоставить более полный код. Я знаю, что подобные вопросы задавали раньше, но я не могу исправить это.
https://gist.github.com/chill17/18f1caa897e6a202aca05239
На самом деле, я нашел [Выпуск # 7973] (https://code.google.com/p/googleappengine/issues/detail?id=7973) и [Выпуск # 12220] (https: // код .google.com/p/googleappengine/issues/detail? id = 12220 & can = 1 & q = Превышено% 20soft% 20private% 20memory & colspec = ID% 20Type% 20Component% 20Status% 20Stars% 20Summary% 20Language% 20Priority% 20Owner% 20Log) в проблемах googleappengine трекер, связанный с обнаруженной проблемой «Превышение предела ограниченной частной памяти». И, основываясь на данных потоках, эта проблема не была полностью исправлена, и обходной путь, данный в одном из потоков, похоже, не связан с вашей проблемой. – Teyam