Note that there are some explanatory texts on larger screens.

plurals
  1. POMemory leak in Ajax implementation of a file uploader (Django on Heroku)
    primarykey
    data
    text
    <p>I've created an ajax file uploader for Django, but each file uploaded takes up a <strong>big</strong> piece of memory (30-80 mb), and doesn't seem to let it go. </p> <p>We're on Heroku, which allots 512mb of memory per dyno, so I quickly start getting over-memory errors.</p> <p>Here is the Django view code to handle the request:</p> <pre><code>if request.is_ajax(): # the file is stored raw in the request upload = request is_raw = True try: filename = request.GET[ 'add_image' ] except KeyError: return HttpResponseBadRequest( "AJAX request not valid" ) (fileBaseName, fileExtension)=os.path.splitext(filename) uniquename = biz_id + "__" + get_a_uuid() + fileExtension saved = save_upload(upload, uniquename, biz) </code></pre> <p>And here is the save_upload code:</p> <pre><code>try: #BusinessImage is my Django model. It uses django-imagekit to processs #the raw uploaded image into three sizes (plus the original) bi = BusinessImage(name=uploaded.GET.get("name"), business=biz) if not BusinessImage.objects.filter(business=biz).exists(): bi.primary_image = True bi.original_image.save(filename,ContentFile(uploaded.read())) except IOError: # could not open the file most likely return False finally: uploaded.close() return True </code></pre> <p>This code is adapted from <a href="https://stackoverflow.com/questions/4750168/fileupload-with-django"> this post </a> (thanks to Alex Kuhl and Thunder Rabbit).</p> <p>I'm thinking the memory problem might have something to do with django-imagekit or I may not be closing the files properly, but I'm not sure. I'd really appreciate any help.</p> <p>Thanks!</p> <p>Clay</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload