Cómo evitar NotImplementedError “Only tempfile.TemporaryFile está disponible para su uso” en django en Google App Engine?

Estoy usando Django 1.1 en Google App Engine a través de use_library . Aquí no se utilizan herramientas de ayuda de Django GAE, Django no rel o herramientas similares. Django maneja el enrutamiento de las URL, la validación de formularios, etc., pero estoy usando modelos puros de App Engine.

En uno de mis formularios de Django hay un FileField, que de vez en cuando parece llamar django.core.files.uploadedfile.TemporaryUploadedFile . Esta clase luego usa tempfile.NamedTemporaryFile y esto resulta en un aumento de App Engine:

 File "/base/python_runtime/python_dist/lib/python2.5/tempfile.py", line 45, in PlaceHolder raise NotImplementedError("Only tempfile.TemporaryFile is available for use") 

Tratando de resolver este problema, tomé el módulo de archivo subido de Google App Engine Helper para Django (que no usa NamedTemporaryFile ) lo gae_uploadedfile.py como gae_uploadedfile.py en el directorio de la aplicación y en mi archivo _djangomain.py_ que agregué:

 from google.appengine.dist import use_library use_library('django', '1.1') (...) import gae_uploadedfile django.core.files.uploadedfile = gae_uploadedfile 

djangomain.py es un archivo donde redirecciono todas las direcciones URL. En app.yaml tengo:

 - url: /.* script: djangomain.py 

Pero no ayudó, todavía tengo esta excepción. ¿Qué estoy haciendo mal, hay otra solución para evitar este error al usar FileField de django.forms ?

Debe actualizar el archivo settings.py con lo siguiente para cambiar el comportamiento predeterminado de Django:

 # only use the memory file uploader, do not use the file system - not able to do so on # google app engine FILE_UPLOAD_HANDLERS = ('django.core.files.uploadhandler.MemoryFileUploadHandler',) FILE_UPLOAD_MAX_MEMORY_SIZE = 2621440 # the django default: 2.5MB 

Más información aquí: FILE_UPLOAD_MAX_MEMORY_SIZE y controladores de carga.

Si está cargando imágenes, se le restringirán las cuotas de 1 MB para la transformación de imágenes, etc. Cuotas y límites