即使GAE的应用流量很低,实例的内存也会慢慢增加并超过120(兆位)兆字节的限制。
目前我看到该服务的流量很大,因此这些内存错误出现的速度已经升级。目前他们每三分钟发生一次。
如何减轻这些内存泄漏?什么是使内存像这样构建的常见错误?
在维修548后,超出了130.719 MB的软私有内存限制 请求总数
代码示例:
import BaseHandler
import webapp2
import time #for time stuff
import json #for output to app
class MainHandler(BaseHandler.BaseHandler):
def respondjson(self, obj):
self.response.headers['Content-Type'] = 'application/json'
rawjson = json.dumps(obj)
self.response.write(rawjson)
def get(self):
thetime = int(time.time())
#thetime += 86400 * 2
#thetime += 60 * 20
self.respondjson({'t':thetime})
app = webapp2.WSGIApplication([
('/gettime', MainHandler)
], debug=True)
这个API只是在json响应中返回时间。
BaseHandler看起来像这样
import webapp2
import logging #for exception logging
class MissingparameterError(Exception):
def __init__(self, value):
self.value = value
def __str__(self):
return repr(self.value)
class BaseHandler(webapp2.RequestHandler):
def handle_exception(self, exception, debug_mode):
# http://webapp-improved.appspot.com/guide/exceptions.html
if not isinstance(exception, MissingparameterError):
# Log the error. We don't want to log errors of kind MissingparameterError.
logging.exception(exception)
#self.response.set_status(500)
# Set a custom message.
self.response.write('An error occurred.')