缓解GAE中的内存泄漏

时间:2014-05-15 08:30:31

标签: python google-app-engine

即使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.')

0 个答案:

没有答案