Превышен предел мягкой памяти с базовым SELECT - PullRequest
2 голосов
/ 12 декабря 2010

У меня есть хранилище данных с именем MyUsers(db.Model), которое в настоящее время содержит около 30 объектов.Я написал скрипт, который выводит на экран атрибут «name» всех сущностей (разделенных символом «#»), используя следующий код:

def get(self):
    q_1 = MyUsers.all().order('name')
    for user in q_1:
        self.response.out.write(user.name)
        self.response.out.write("#")

Скрипт работает просто отлично, нопроблема в том, что я всегда получаю критические сообщения в журнале ядра приложения:

12-12 12:45 AM 22,691

Превышен предел мягкой памяти с 220,043 МБ после обслуживания 1 всего запросов

I 12-12 00:45 22.691

Этот запрос вызвал запуск нового процесса для вашего приложения и, таким образом, вызвал загрузку кода вашего приложения в первый раз.Таким образом, этот запрос может занять больше времени и использовать больше ресурсов ЦП, чем обычный запрос для вашего приложения.

W 12-12 12:45 AM 22.691

После обработки этого запроса процесс, обработавший этот запрос, былустановлено, что он использует слишком много памяти и был прерван.Это может привести к использованию нового процесса для следующего запроса к вашему приложению.Если вы часто видите это сообщение, в вашем приложении может быть утечка памяти.

Кажется, что это очень простая базовая операция, которая не должна превышать какие-либо ограничения памяти, так что я могусделать, чтобы улучшить его?

Спасибо,

Джоэл


РЕДАКТИРОВАТЬ:

Что касается импорта, импорт, который я использую:

from models.model import *
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
import profiler.appengine.request
import profiler.appengine.datastore

Я использовал профилировщик, чтобы попытаться понять, что не так, может быть, вы можете помочь Debug from profiler

Спасибо!

Джоэл


РЕДАКТИРОВАТЬ 2

Это полная версия кода (проблема возникла также до того, как я импортировал профилировщик, я использовал его после того, как он попытался отладить):

from models.model import MyUsers
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
import profiler.appengine.request
import profiler.appengine.datastore

class PrintAll(webapp.RequestHandler):

    def get(self):
        q_1 = MyUsers.all().order('name')
        for user in q_1:
            self.response.out.write(user.name)
            self.response.out.write("#")

application = webapp.WSGIApplication(
                                     [('/print', PrintAll)
                                      ],
                                     debug=True)

def main():

    profiler.appengine.request.activate()
    profiler.appengine.datastore.activate()

    run_wsgi_app(application)

    profiler.appengine.request.show_summary()
    profiler.appengine.datastore.show_summary()
    profiler.appengine.datastore.dump_requests() # optional

if __name__ == "__main__":
    main()

Что касается класса модели MyUsers ():

class MyUsers(db.Model):
    user = db.UserProperty()
    points = db.FloatProperty()
    bonus = db.FloatProperty(default=0.0)
    joindate = db.DateTimeProperty(auto_now_add=True)
    lastEntry=db.DateTimeProperty(auto_now_add=True)
    name=db.StringProperty()
    last_name = db.StringProperty()
    homepage = db.StringProperty()
    hobbies = db.ListProperty(str)
    other = db.StringProperty()
    calculate1 = db.FloatProperty()
    calculate2 = db.FloatProperty()
    calculate3= db.IntegerProperty(default=0)
    history = db.ListProperty(str)
    history2 = db.ListProperty(str)
    title = db.IntegerProperty(default=0)
    title_string = db.StringProperty()
    updateDate = db.DateTimeProperty(auto_now_add=True)
    level=db.IntegerProperty(default=0)
    debug_helper=db.IntegerProperty(default=0)
    debug_list=db.ListProperty(str)

1 Ответ

1 голос
/ 13 декабря 2010

На самом деле, нет никакого способа, которым это могло бы вызвать ошибку, которую вы видите.Можете ли вы предоставить полный случай воспроизведения?Вполне вероятно, что причиной этой проблемы является что-то другое, кроме включенного вами фрагмента кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...