@@ -368,6 +368,7 @@ def __init__(self, insider, prerelease, version, session):
368368 self .prerelease = prerelease
369369 self .version = version
370370 self .session = session
371+ self .backoff = 1
371372
372373 def get_recommendations (self , destination , totalrecommended ):
373374 recommendations = self .search_top_n (totalrecommended )
@@ -517,6 +518,13 @@ def search_release_by_extension_id(self, extensionid):
517518 log .warning (f"search_release_by_extension_id failed { extensionid } " )
518519 return False
519520
521+ def backoff_reset (self ):
522+ self .backoff = 1
523+
524+ def backoff_sleep (self ):
525+ time .sleep (self .backoff )
526+ self .backoff *= 2
527+
520528 def _query_marketplace (self , filtertype , filtervalue , pageNumber = 0 , pageSize = 500 , limit = 0 , sortOrder = vsc .SortOrder .Default , sortBy = vsc .SortBy .NoneOrRelevance , queryFlags = 0 ):
521529 extensions = {}
522530 total = 0
@@ -531,19 +539,26 @@ def _query_marketplace(self, filtertype, filtervalue, pageNumber=0, pageSize=500
531539 query = self ._query (filtertype , filtervalue ,
532540 pageNumber , pageSize , queryFlags )
533541 result = None
534- for i in range (10 ):
535- if i > 0 :
536- log .info ("Retrying pull page %d attempt %d." %
537- (pageNumber , i + 1 ))
542+ i = 0
543+ while i < 10 :
538544 try :
539545 result = self .session .post (vsc .URL_MARKETPLACEQUERY , headers = self ._headers (
540546 ), json = query , allow_redirects = True , timeout = vsc .TIMEOUT )
541547 if result :
548+ self .backoff_reset ()
542549 break
550+ elif result .status_code == 429 :
551+ # Server is rate limiting us. Backoff.
552+ self .backoff_sleep ()
553+ continue
543554 except requests .exceptions .ProxyError :
544555 log .info ("ProxyError: Retrying." )
545556 except requests .exceptions .ReadTimeout :
546557 log .info ("ReadTimeout: Retrying." )
558+ i += 1
559+ if i < 10 :
560+ log .info ("Retrying pull page %d attempt %d." %
561+ (pageNumber , i + 1 ))
547562 if not result :
548563 log .info ("Failed 10 attempts to query marketplace. Giving up." )
549564 break
0 commit comments