New throttle - will require testing

This commit is contained in:
angelblue05 2016-02-08 02:36:09 -06:00
parent 5e6e606031
commit b12009f422
1 changed files with 61 additions and 6 deletions

View File

@ -211,6 +211,8 @@ class Read_EmbyServer():
else: else:
index = 0 index = 0
jump = self.limitIndex jump = self.limitIndex
throttled = False
highestjump = 0
while index < total: while index < total:
# Get items by chunk to increase retrieval speed at scale # Get items by chunk to increase retrieval speed at scale
@ -239,13 +241,66 @@ class Read_EmbyServer():
"Tags,ProviderIds,ParentId,RemoteTrailers,SpecialEpisodeNumbers," "Tags,ProviderIds,ParentId,RemoteTrailers,SpecialEpisodeNumbers,"
"MediaSources" "MediaSources"
) )
result = doUtils.downloadUrl(url, parameters=params) result = doUtils(url, parameters=params)
items['Items'].extend(result['Items'])
if result == "":
# Something happened to the connection.
if not throttled:
throttled = True
self.logMsg("Throttle activated.", 1)
elif jump == highestjump:
# We already adjusted to highestjump, but it failed. Reset value
self.logMsg("Reset highest value.", 1)
highestjump = 0
index += jump # Lower the number by half
if dialog: if highestjump:
percentage = int((float(index) / float(total))*100) throttled = False
dialog.update(percentage) jump = highestjump
else:
jump = int(jump/2)
self.logMsg("Set jump limit to recover: %s" % jump)
retry = 0
while utils.window('emby_online') != "true":
# Wait server to come back online
if retry == 3:
self.logMsg("Server never came back online.")
return
retry += 1
if xbmc.Monitor().waitForAbort(1):
# Abort was requested while waiting.
return
else:
xbmc.Monitor().waitForAbort(3)
else:
items['Items'].extend(result['Items'])
index += jump
if dialog:
percentage = int((float(index) / float(total))*100)
dialog.update(percentage)
if jump > highestjump:
# Adjust with the latest number, if it's greater
highestjump = jump
if throttled:
# We needed to adjust the number, keep increasing until.
if jump < highestjump:
# Found a number that already works, use it.
throttled = False
jump = highestjump
self.logMsg("Throttle deactivated with jump limit set to: %s" % jump, 1)
else:
# keep increasing until the connection times out again
increment = int(jump*0.33)
if not increment: # Incase the increment is 0
increment += 10
jump += increment
self.logMsg("Increase jump limit to: %s" % jump, 1)
return items return items
def getViews(self, type, root=False): def getViews(self, type, root=False):