mirror of
https://github.com/jellyfin/jellyfin-kodi.git
synced 2024-12-25 02:06:09 +00:00
New throttle - will require testing
This commit is contained in:
parent
5e6e606031
commit
b12009f422
1 changed files with 61 additions and 6 deletions
|
@ -211,6 +211,8 @@ class Read_EmbyServer():
|
|||
else:
|
||||
index = 0
|
||||
jump = self.limitIndex
|
||||
throttled = False
|
||||
highestjump = 0
|
||||
|
||||
while index < total:
|
||||
# Get items by chunk to increase retrieval speed at scale
|
||||
|
@ -239,13 +241,66 @@ class Read_EmbyServer():
|
|||
"Tags,ProviderIds,ParentId,RemoteTrailers,SpecialEpisodeNumbers,"
|
||||
"MediaSources"
|
||||
)
|
||||
result = doUtils.downloadUrl(url, parameters=params)
|
||||
items['Items'].extend(result['Items'])
|
||||
result = doUtils(url, parameters=params)
|
||||
|
||||
index += jump
|
||||
if dialog:
|
||||
percentage = int((float(index) / float(total))*100)
|
||||
dialog.update(percentage)
|
||||
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
|
||||
|
||||
# Lower the number by half
|
||||
if highestjump:
|
||||
throttled = False
|
||||
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
|
||||
|
||||
def getViews(self, type, root=False):
|
||||
|
|
Loading…
Reference in a new issue