更新时间:2022-09-07 09:10:42
今天我写了一个很简单的nodejs应用,使用module request同时向jianshu网站发起数个异步请求,通过分页的方式向简书请求我所有的文章列表。我观察到一个很奇怪的现象:
当我把下图变量MAX的值设成很小,比如10以下,意思是一次只发送10个以下的并发请求,此时这个nodejs应用工作完全正常。
然而当我把MAX改成100后,发现很多请求的数据并没有从jianshu网站上返回。经过调试发现,这些出问题的请求,接到的statusCode为429.
百度学习了一下429的含义:
当你需要限制客户端请求某个服务的数量,也就是限制请求速度时,该状态码就会非常有用。在此之前,有一些类似的状态码。例如“509 Bandwidth Limit Exceeded”。
因此我这个应用要么降低并发请求的发送频率,要么把异步并发请求改成同步。