最近搭建了一個Apache+openssl+mod-wsgi的環境實作https通訊,但是碰到了一個很古怪的問題,怎么也解決不了,希望有大牛 能幫忙解答。
問題如下:
環境搭建好之后,http通訊完全正常,無論客戶端post多大的資料包服務端都能收到,但是https通訊卻有點問題。
當進行https通訊時,如果客戶端和服務端都是本機時,無論post多大的資料包也是沒問題的,但是當客戶端處于網路中其它機器時,post幾十上百K的小資料包都沒問題,但是post大資料包(5m,6m左右)時,服務端正常接收兩三次之后,程式就會卡住。(post引數verify=false)
卡住的位置就是這一句:“body=environ[‘wsgi.input’].read(length)”
程式一直阻塞在這里直到連接超時。偶爾有時等待很久之后也能在連接超時前正常read出來。
客戶端和服務端計算顯示當前“length”也都是正確的。
程式卡住這一句,其實等同于“sys.stdin.buffer.read(length)”。
這個read操作是一個阻塞操作,必須要讀到指定的length才會釋放。
但是為什么讀取大的https通訊資料包會卡住而http則沒有這個問題呢?
這個問題的根源在哪里?是https傳輸程序中丟包了嗎?還是資料卡在了哪個環節不能正常抵達位置?哪位大牛能幫忙指點解決嗎?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/103989.html
標籤:Apache
下一篇:百度地圖的訪問
