2012-10-17 4 views
0

web.py 애플리케이션을 실행 중입니다. 외부에서 POST 요청을받습니다. 요청 헤더에 transfer-encoding: chunked이 포함되어 있습니다. web.data()으로 데이터를 읽으려고하면 엄청난 양의 메모리가 소모되기 시작하고 몇 분 후에 서버가 종료됩니다.web.py에서 청크 분할 인코딩 문제

나는이 transfer-encoding 유형의 의문의 여지가 있습니다. 누구도 같은 문제에 직면 했습니까?

답변

0

실제로 요청한 것으로 간주되는 웹 서버가 청크가있는 본문을 가지고 있기 때문입니다. 이 상황에서 Python 내부의 SimpleHTTPServer가 눌립니다. 토네이도는 괜찮지 만 wsgi.input으로 몸을 얻을 수는 없습니다. gevent는 괜찮지 만 webpy는 제대로 처리하지 못합니다. 이러한 코드로이 문제를 해결할 수 있습니다.

def data(): 
    if 'data' not in ctx: 
     if ctx.env.get('HTTP_TRANSFER_ENCODING') == 'chunked': 
      ctx.data = ctx.env['wsgi.input'].read() 
     else: 
      cl = intget(ctx.env.get('CONTENT_LENGTH'), 0) 
      ctx.data = ctx.env['wsgi.input'].read(cl) 
    return ctx.data 

원인 때문에 이러한 코드는 gevent와 함께 사용해야합니다.

관련 문제