App Engine文件上载和赋值给变量会在提供X请求后导致内存使用错误

rob*_*her 5 python google-app-engine

我将图像(每个<10MB)上传到简化处理程序(下面)以展示此问题.在F1(128MB内存)实例上提供约5个请求后,我运行内存限制:"在为6个请求提供服务后,超过了软内存限制,为152.414 MB"

在一个F2(256MB的ram)实例上,我得到了更多的请求,但不是很多:"在服务19个请求总数后,超过了258.156 MB的软私有内存限制"

示例代码:

import webapp2
class FileUploader(webapp2.RequestHandler):

  def post(self):
    test = self.request.get('file')
    self.response.out.write('hi')

app = webapp2.WSGIApplication([('/leak-uploader-example', FileUploader)],
                              debug=True)
Run Code Online (Sandbox Code Playgroud)

日志中的文本表明我的应用程序可能存在内存泄漏.在请求完成后,似乎问题可能是Python或App Engine垃圾收集.有关如何在几次请求后阻止我的实例被终止的任何建议?

更新 - 我看到使用webapp框架(而不是webapp2)的相同行为:"在服务6个请求总数后,超出了143.121 MB的软私有内存限制"

Sas*_*sxa 2

为什么不使用 Blobstore 存储图像?https://developers.google.com/appengine/docs/python/blobstore/#Python_Uploading_a_blob

  • 我在我的项目中通常通过 ajax 做同样的事情。但我认为你的问题是你试图将图像上传到“常规”服务器,而不是专门针对媒体上传优化的服务器,例如 Blobstore 和云存储。看看我链接的页面上的示例,这是一个简单的过程。您还可以查看图像 API:https://developers.google.com/appengine/docs/python/images/usingimages#Uploading (2认同)