У меня есть хранилище данных с именем 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](https://i.stack.imgur.com/BnJBE.jpg)
Спасибо!
Джоэл
РЕДАКТИРОВАТЬ 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)