Speicherleck in Google NDB-Bibliothek

Ich denke, es gibt ein Speicherverlust in derndb Bibliothek, aber ich kann nicht finden, wo.

Gibt es eine Möglichkeit, das unten beschriebene Problem zu vermeiden?
Haben Sie eine genauere Vorstellung davon, wie Sie testen können, um herauszufinden, wo das Problem liegt?

So habe ich das Problem reproduziert:

Ich habe eine minimalistische Google App Engine-Anwendung mit 2 Dateien erstellt.
app.yaml:

application: myapplicationid
version: demo
runtime: python27
api_version: 1
threadsafe: yes


handlers:
- url: /.*
  script: main.APP

libraries:
- name: webapp2
  version: latest

main.py:

# -*- coding: utf-8 -*-
"""Memory leak demo."""
from google.appengine.ext import ndb
import webapp2


class DummyModel(ndb.Model):

    content = ndb.TextProperty()


class CreatePage(webapp2.RequestHandler):

    def get(self):
        value = str(102**100000)
        entities = (DummyModel(content=value) for _ in xrange(100))
        ndb.put_multi(entities)


class MainPage(webapp2.RequestHandler):

    def get(self):
        """Use of `query().iter()` was suggested here:
            https://code.google.com/p/googleappengine/issues/detail?id=9610
        Same result can be reproduced without decorator and a "classic"
            `query().fetch()`.
        """
        for _ in range(10):
            for entity in DummyModel.query().iter():
                pass # Do whatever you want
        self.response.headers['Content-Type'] = 'text/plain'
        self.response.write('Hello, World!')


APP = webapp2.WSGIApplication([
    ('/', MainPage),
    ('/create', CreatePage),
])

Ich habe die Anwendung mit dem Namen @ hochgelade/create Einmal
anach wird bei jedem Aufruf von/ erhöht den von der Instanz verwendeten Speicher. Bis zum Stillstand wegen des FehlersExceeded soft private memory limit of 128 MB with 143 MB after servicing 5 requests total.

Beispiel für ein Diagramm zur Speicherauslastung (Sie können das Wachstum und die Abstürze des Speichers sehen):

Hinweis: Das Problem kann mit einem anderen Framework als @ reproduziert werdwebapp2, mögenweb.py

Antworten auf die Frage(6)

Ihre Antwort auf die Frage