while문 무한루프가 발생한 이유
Today I Learned 날짜 2024년 12월 26일 목요일 내용 무한 루프 인스타그램에서 필요한 데이터들을 가져오는데 상당히 지나치게 오래걸린다. 이게 데이터가 많아서 그런거라고 생각했는데.. 충격적이게도 아주 허무한 코드 오류가 있었다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 url = f"https://graph.instagram.com/{instagram_post.post_id}/comments" params = { "access_token": self.instagram_account.access_token, "fields": "timestamp,text,from,like_count", "limit": 50, } response = requests.get(url, params=params) res_json = response.json() if "data" in res_json: comment_arr += res_json["data"] while "paging" in res_json and "next" in res_json["paging"]: response = requests.get(res_json["paging"]["next"]) res = response.json() if "data" in res: comment_arr += res["data"] 이 코드였는데… 댓글이 50개 이상 있을 경우, 다음 페이지에 요청을 지속해서 보내는 반복문이다. 더이상 다음 페이지가 없을 때까지 반복된다. while문 안에서 새로 받아온 데이터를 res_json 이 아닌 res 로 지정해버렸다.. 그래서 res_json 은 최초로 보낸 요청의 것으로 계속 유지되어서 안에 while 문이 유지될 조건이 계속 충족되는 상태였고, 계속 똑같은 요청을 무한대로 보내고 있었다. 바보도 이런 바보가… ...