@@ -98,7 +98,8 @@ async def request(self, route: Route, **kwargs) -> Optional[Any]:
9898 """
9999
100100 kwargs ["headers" ] = {** self ._headers , ** kwargs .get ("headers" , {})}
101- kwargs ["headers" ]["Content-Type" ] = "application/json"
101+ if kwargs .get ("json" ):
102+ kwargs ["headers" ]["Content-Type" ] = "application/json"
102103
103104 reason = kwargs .pop ("reason" , None )
104105 if reason :
@@ -165,22 +166,28 @@ async def request(self, route: Route, **kwargs) -> Optional[Any]:
165166 # This "redundant" debug line is for debug use and tracing back the error codes.
166167
167168 raise HTTPException (data ["code" ], message = data ["message" ])
168- elif remaining and not int (remaining ):
169- if response .status == 429 :
169+
170+ if response .status == 429 :
171+ if not is_global :
170172 log .warning (
171173 f"The HTTP client has encountered a per-route ratelimit. Locking down future requests for { reset_after } seconds."
172174 )
173175 _limiter .reset_after = reset_after
174176 await asyncio .sleep (_limiter .reset_after )
175177 continue
176- elif is_global :
178+ else :
177179 log .warning (
178180 f"The HTTP client has encountered a global ratelimit. Locking down future requests for { reset_after } seconds."
179181 )
180182 self ._global_lock .reset_after = reset_after
181183 self ._loop .call_later (
182184 self ._global_lock .reset_after , self ._global_lock .lock .release
183185 )
186+ elif int (remaining ) == 0 :
187+ log .warning (
188+ f"The HTTP client has exhausted a per-route ratelimit. Locking route for { reset_after } seconds."
189+ )
190+ self ._loop .call_later (reset_after , _limiter .release_lock ())
184191
185192 log .debug (f"RETURN { response .status } : { dumps (data , indent = 4 , sort_keys = True )} " )
186193
0 commit comments