2012-10-17 63 views
0

我的web.py應用程序正在運行。它接收來自外部的POST請求。請求標題包含transfer-encoding: chunked。當我嘗試使用web.data()讀取數據時,該過程開始消耗大量內存,幾分鐘後服務器死亡。web.py中的塊化編碼問題

我有這個transfer-encoding類型的疑問。有人遇到同樣的問題嗎?

回答

0

其實,這是因爲只有幾個Web服務器認爲請求有一個大塊的身體。 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。