2013-05-31 5 views
13

Используя модуль Python bottle, я получаю сообщение об ошибке HTTP 413 при отправке запросов размера тела> в константу MEMFILE_MAX. Ниже приведен минимальный рабочий пример.Модуль бутылочки Python вызывает «Ошибка: 413 Request Entity Too Large»

Серверная часть (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.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(); 

Первый запрос печатает:

100000 

Второй запрос печатает:

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

У меня нет абсолютно никакой идеи, как увеличить внутренний предел bottle. Есть ли простой способ увеличить лимит, разрешая запросы размера, например, 1 МБ?

+0

Попробуйте изменить 'bottle.BaseRequest.MEMFILE_MAX' на что-то большее, чем' 102400'. – Blender

ответ

32

Вы должны быть в состоянии только

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

Это, кажется, единственный способ, основанный на source

+1

Точно решает мою проблему! У меня было подозрение, что мне придется каким-то образом получить доступ к свойству '' MEMFILE_MAX'', но не был уверен. Благодаря! – Tregoreg

+0

И еще один пользователь переполнения стека сохранил мой день :) Просто ради материи: значение приходит в байте, стандартный размер - 102400 (как упоминалось в источнике от вашей ссылки) –

+0

вы, сэр, сделали мой день – pyInTheSky

Смежные вопросы