Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python bottle module causes "Error: 413 Request Entity Too Large"

Tags:

Using Python's module bottle, I'm getting HTTP 413 error when posting requests of body size > bottle's internal MEMFILE_MAX constant. Minimal working example is shown below.

Server part (server.py):

from bottle import *  @post('/test') def test():     return str(len(request.forms['foo']));  def main():     run(port=8008);  if __name__ == '__main__':     main(); 

Client part (client.py):

import requests  def main():     url = 'http://127.0.0.1:8008/test';      r = requests.post(url, data={ 'foo' : 100000 * 'a' });     print(r.text);      r = requests.post(url, data={ 'foo' : 200000 * 'a' });     print(r.text);  if __name__ == '__main__':     main(); 

The first request prints:

100000 

The second request prints:

... <body>     <h1>Error: 413 Request Entity Too Large</h1>     <p>Sorry, the requested URL <tt>&#039;http://127.0.0.1:8008/test&#039;</tt>        caused an error:</p>     <pre>Request to large</pre> </body> .... 

I have absolutely no idea how to increase the bottle's internal limit. Is there any simple way to increase the limit, allowing requests of size, e.g., 1 MB?

like image 464
Tregoreg Avatar asked May 31 '13 21:05

Tregoreg


People also ask

What does 413 entity too large mean?

The HTTP 413 Payload Too Large response status code indicates that the request entity is larger than limits defined by server; the server might close the connection or return a Retry-After header field.


1 Answers

You should be able to just

import bottle bottle.BaseRequest.MEMFILE_MAX = 1024 * 1024 # (or whatever you want) 

This appears to be the only way based on the source

like image 91
sberry Avatar answered Sep 30 '22 02:09

sberry