Hello all,

I've been testing a simple REST endpoint that handles form PUT/POST file 
uploads with varying file sizes. It appears there exists a limit at or near 
2GB file sizes that doesn't allow a file larger than 2GB to be uploaded. 
Once the upload begins, via a cURL call, the system seems to hang for 
several minutes and then dies...

The endpoint code is fairly simple:

 @staticmethod 
    def put(): 
        file = request.files['file'] 
 
        try: 
            source_extension = os.path.splitext(file.filename)[1] 
            destination_filename = uuid4().hex + source_extension 
            file.save(os.path.join(CONFIG.TMP_DIR, destination_filename)) 
        except: 
            msg = 'Unable to process file upload' 
            LOG.exception(msg) 
            return APIError(client.INTERNAL_SERVER_ERROR, False, 
msg).make_error() 
 
        return RESTResponse([], client.OK, None) 













Traceback (most recent call last):

  File "/usr/local/lib/python3.4/site-packages/flask/app.py", line 1836, in 
__call__

    return self.wsgi_app(environ, start_response)

  File "/usr/local/lib/python3.4/site-packages/flask/app.py", line 1820, in 
wsgi_app

    response = self.make_response(self.handle_exception(e))

  File "/usr/local/lib/python3.4/site-packages/flask_cors.py", line 272, in 
wrapped_function

    return cors_after_request(app.make_response(f(*args, **kwargs)))

  File "/usr/local/lib/python3.4/site-packages/flask_restful/__init__.py", 
line 261, in error_router

    return self.handle_error(e)

  File "/usr/local/lib/python3.4/site-packages/flask/app.py", line 1817, in 
wsgi_app

    response = self.full_dispatch_request()

  File "/usr/local/lib/python3.4/site-packages/flask/app.py", line 1477, in 
full_dispatch_request

    rv = self.handle_user_exception(e)

  File "/usr/local/lib/python3.4/site-packages/flask_cors.py", line 272, in 
wrapped_function

    return cors_after_request(app.make_response(f(*args, **kwargs)))

  File "/usr/local/lib/python3.4/site-packages/flask_restful/__init__.py", 
line 261, in error_router

    return self.handle_error(e)

  File "/usr/local/lib/python3.4/site-packages/flask/app.py", line 1475, in 
full_dispatch_request

    rv = self.dispatch_request()

  File "/usr/local/lib/python3.4/site-packages/flask/app.py", line 1461, in 
dispatch_request

    return self.view_functions[rule.endpoint](**req.view_args)

  File "/usr/local/lib/python3.4/site-packages/flask_restful/__init__.py", 
line 430, in wrapper

    resp = resource(*args, **kwargs)

  File "/usr/local/lib/python3.4/site-packages/flask/views.py", line 84, in 
view

    return self.dispatch_request(*args, **kwargs)

  File "/usr/local/lib/python3.4/site-packages/flask_restful/__init__.py", 
line 520, in dispatch_request

    resp = meth(*args, **kwargs)

  File "/Users/royrusso/dev/predikto/predikto-rest/predikto/api/upload.py", 
line 17, in put

    file = request.files['file']

  File "/usr/local/lib/python3.4/site-packages/werkzeug/local.py", line 338, 
in __getattr__

    return getattr(self._get_current_object(), name)

  File "/usr/local/lib/python3.4/site-packages/werkzeug/utils.py", line 71, 
in __get__

    value = self.func(obj)

  File "/usr/local/lib/python3.4/site-packages/werkzeug/wrappers.py", line 
512, in files

    self._load_form_data()

  File "/usr/local/lib/python3.4/site-packages/flask/wrappers.py", line 165, 
in _load_form_data

    RequestBase._load_form_data(self)

  File "/usr/local/lib/python3.4/site-packages/werkzeug/wrappers.py", line 
356, in _load_form_data

    mimetype, content_length, options)

  File "/usr/local/lib/python3.4/site-packages/werkzeug/formparser.py", 
line 193, in parse

    content_length, options)

  File "/usr/local/lib/python3.4/site-packages/werkzeug/formparser.py", 
line 99, in wrapper

    return f(self, stream, *args, **kwargs)

  File "/usr/local/lib/python3.4/site-packages/werkzeug/formparser.py", 
line 210, in _parse_multipart

    form, files = parser.parse(stream, boundary, content_length)

  File "/usr/local/lib/python3.4/site-packages/werkzeug/formparser.py", 
line 520, in parse

    return self.cls(form), self.cls(files)

  File "/usr/local/lib/python3.4/site-packages/werkzeug/datastructures.py", 
line 373, in __init__

    for key, value in mapping or ():

  File "/usr/local/lib/python3.4/site-packages/werkzeug/formparser.py", 
line 518, in <genexpr>

    form = (p[1] for p in formstream if p[0] == 'form')

  File "/usr/local/lib/python3.4/site-packages/werkzeug/formparser.py", 
line 494, in parse_parts

    _write(ell)

OSError: [Errno 22] Invalid argument

Thoughts?

-- 
You received this message because you are subscribed to the Google Groups 
"pocoo-libs" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/pocoo-libs.
For more options, visit https://groups.google.com/d/optout.

Reply via email to