今天我寫了一個很簡單的nodejs應用,使用module request同時向jianshu網站發起數個異步請求,通過分頁的方式向簡書請求我所有的文章清單。
我觀察到一個很奇怪的現象:
當我把下圖變量MAX的值設成很小,比如10以下,意思是一次隻發送10個以下的并發請求,此時這個nodejs應用工作完全正常。
然而當我把MAX改成100後,發現很多請求的資料并沒有從jianshu網站上傳回。經過調試發現,這些出問題的請求,接到的statusCode為429.
百度學習了一下429的含義:
當你需要限制用戶端請求某個服務的數量,也就是限制請求速度時,該狀态碼就會非常有用。在此之前,有一些類似的狀态碼。例如“509 Bandwidth Limit Exceeded”。
是以我這個應用要麼降低并發請求的發送頻率,要麼把異步并發請求改成同步。