2013-05-31 6 views
13

Utilizzo del modulo Python bottle, Ricevo l'errore HTTP 413 quando si registrano richieste di dimensioni corporee> 2 interne. Di seguito è riportato un esempio di funzionamento minimo.Il modulo flacone Python causa "Errore: 413 Entità richiesta troppo grande"

parte Server (server.py):

from bottle import * 

@post('/test') 
def test(): 
    return str(len(request.forms['foo'])); 

def main(): 
    run(port=8008); 

if __name__ == '__main__': 
    main(); 

parte client (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(); 

Le prime stampe richiesta:

100000 

Il secondo stampe richiesta:

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

Non ho assolutamente idea di come aumentare il limite interno di bottle. C'è un modo semplice per aumentare il limite, consentendo richieste di dimensioni, ad es. 1 MB?

+0

provare a cambiare 'bottle.BaseRequest.MEMFILE_MAX' a qualcosa di più grande di' 102400'. – Blender

risposta

32

si dovrebbe essere in grado di appena

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

Questo sembra essere l'unico modo in base alla source

+1

Risolve esattamente il mio problema! Avevo il sospetto che dovessi accedere alla proprietà '' MEMFILE_MAX'' ​​in qualche modo, ma non ero affatto sicuro. Grazie! – Tregoreg

+0

E un altro utente overflow dello stack mi ha salvato la giornata :) Solo per motivi di importanza: il valore viene espresso in byte, la dimensione standard è 102400 (come indicato anche dal link) –

+0

signore, ha reso la mia giornata – pyInTheSky