2013-05-31 13 views
13

Użycie modułu Pythona bottle, Otrzymuję błąd HTTP 413 podczas wysyłania żądań o stałej wielkości wewnętrznej bottle wewnętrznej MEMFILE_MAX. Minimalny przykład roboczy pokazano poniżej.Moduł butelki Python powoduje "Błąd: 413 Żądanie podmiotu zbyt duże"

część 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(); 

częścią 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(); 

Pierwsze wydruki żądanie:

100000 

Drugi drukuje żądanie:

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

Nie mam absolutnie pojęcia, jak zwiększyć wewnętrzny limit bottle. Czy istnieje prosty sposób zwiększenia limitu, pozwalając na żądania o rozmiarze, np. 1 MB?

+0

Spróbuj zmienić 'bottle.BaseRequest.MEMFILE_MAX' do czegoś większego niż' 102400'. – Blender

Odpowiedz

32

Powinieneś być w stanie po prostu

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

To wydaje się być jedynym sposobem na podstawie source

+1

Dokładnie rozwiązuje mój problem! Miałem podejrzenie, że będę musiał uzyskać dostęp do właściwości '' MEMFILE_MAX'', ale nie byłem pewien. Dzięki! – Tregoreg

+0

I kolejny użytkownik przepełnienia stosu zaoszczędził mój dzień :) Tylko dla dobra sprawy: wartość przychodzi w bajcie, standardowy rozmiar to 102400 (jak podaje źródło z twojego linku) –

+0

ty sir, zrobiłeś mój dzień – pyInTheSky

Powiązane problemy