2013-05-31 23 views
13

Sử dụng mô-đun của Python bottle, tôi gặp lỗi HTTP 413 khi đăng yêu cầu kích thước nội dung>bottle nội bộ MEMFILE_MAX không đổi. Ví dụ làm việc tối thiểu được hiển thị bên dưới.Mô-đun chai Python gây ra "Lỗi: 413 Yêu cầu thực thể quá lớn"

máy chủ phần (server.py):

from bottle import * 

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

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

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

Khách hàng phần (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(); 

Yêu cầu bản in đầu tiên:

100000 

Yêu cầu bản in thứ hai:

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

Tôi hoàn toàn không biết làm cách nào để tăng giới hạn nội bộ của bottle. Có cách nào đơn giản để tăng giới hạn, cho phép yêu cầu kích thước, ví dụ: 1 MB không?

+0

Cố gắng thay đổi 'bottle.BaseRequest.MEMFILE_MAX' một cái gì đó lớn hơn hơn '102400'. – Blender

Trả lời

32

Bạn nên có thể chỉ cần

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

Điều này dường như là cách duy nhất dựa trên source

+1

Giải quyết chính xác vấn đề của tôi! Tôi đã có một sự nghi ngờ rằng tôi sẽ phải truy cập vào tài sản '' MEMFILE_MAX'' ​​bằng cách nào đó, nhưng không chắc chắn chút nào. Cảm ơn! – Tregoreg

+0

Và một ngăn xếp tràn người dùng khác đã lưu ngày của tôi :) Chỉ vì lợi ích của vật chất: giá trị tính bằng byte, kích thước chuẩn là 102400 (như nguồn từ liên kết của bạn cũng được đề cập) –

+0

bạn thưa ngài, đã làm cho ngày của tôi – pyInTheSky

Các vấn đề liên quan