0
我的web.py應用程序正在運行。它接收來自外部的POST請求。請求標題包含transfer-encoding: chunked
。當我嘗試使用web.data()
讀取數據時,該過程開始消耗大量內存,幾分鐘後服務器死亡。web.py中的塊化編碼問題
我有這個transfer-encoding
類型的疑問。有人遇到同樣的問題嗎?
我的web.py應用程序正在運行。它接收來自外部的POST請求。請求標題包含transfer-encoding: chunked
。當我嘗試使用web.data()
讀取數據時,該過程開始消耗大量內存,幾分鐘後服務器死亡。web.py中的塊化編碼問題
我有這個transfer-encoding
類型的疑問。有人遇到同樣的問題嗎?
其實,這是因爲只有幾個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。