2013-05-31 6 views
13

Mit Python-Modul bottle, bekomme ich HTTP 413 Fehler beim Buchen von Anfragen der Körpergröße>bottle 's interne MEMFILE_MAX Konstante. Minimal funktionierendes Beispiel ist unten gezeigt.Python Flasche Modul verursacht "Fehler: 413 Request Entity Too Large"

Server Teil (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-Teil (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(); 

Die erste Anforderung druckt:

100000 

Die zweite Anforderung druckt:

... 
<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> 
.... 

Ich habe absolut keine Ahnung, wie man das interne Limit bottle erhöht. Gibt es eine einfache Möglichkeit, das Limit zu erhöhen, indem Anforderungen der Größe, z. B. 1 MB, zugelassen werden?

+0

Versuchen Sie, 'bottle.BaseRequest.MEMFILE_MAX' etwas größer als' 102400' der Lage sein. – Blender

Antwort

32

Sie sollten nur

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

Dies scheint die einzige Art und Weise auf der Grundlage der source

+1

Genau das löst mein Problem! Ich hatte den Verdacht, dass ich irgendwie auf die Eigenschaft "MEMFILE_MAX" zugreifen müsste, war mir aber überhaupt nicht sicher. Vielen Dank! – Tregoreg

+0

Und ein weiterer Stack Overflow-Benutzer gespeichert meinen Tag :) Nur aus Gründen der Sache: Wert kommt in Byte, Standardgröße ist 102400 (wie die Quelle von Ihrem Link auch erwähnt) –

+0

Sie Herr, machte meinen Tag – pyInTheSky

Verwandte Themen