[Bf-extensions-cvs] [464dd1a5] master: set a maximum number of retries for downloads.

Vilem Duha noreply at git.blender.org
Thu May 23 15:06:52 CEST 2019


Commit: 464dd1a50b3a17bd8e9b6b1f7ec4bc0bc27e7ed5
Author: Vilem Duha
Date:   Wed May 22 02:59:23 2019 +0200
Branches: master
https://developer.blender.org/rBA464dd1a50b3a17bd8e9b6b1f7ec4bc0bc27e7ed5

set a maximum number of retries for downloads.

===================================================================

M	blenderkit/download.py
M	blenderkit/ui_panels.py

===================================================================

diff --git a/blenderkit/download.py b/blenderkit/download.py
index 7bc04481..3eaa4e51 100644
--- a/blenderkit/download.py
+++ b/blenderkit/download.py
@@ -475,12 +475,9 @@ def timer_update():  # TODO might get moved to handle all blenderkit stuff, not
                 if len(file_names) == 2:  # todo this should try to check if both files exist and are ok.
                     shutil.copyfile(file_names[0], file_names[1])
 
-                print('appending asset')
+                utils.p('appending asset')
                 # progress bars:
-                if bpy.context.scene['search results'] is not None:
-                    for sres in bpy.context.scene['search results']:
-                        if asset_data['id'] == sres['id']:
-                            sres['downloaded'] = 100
+
                 # we need to check if mouse isn't down, which means an operator can be running.
                 # Especially for sculpt mode, where appending a brush during a sculpt stroke causes crasehes
                 #
@@ -495,6 +492,7 @@ def timer_update():  # TODO might get moved to handle all blenderkit stuff, not
                     done = try_finished_append(asset_data, **tcom.passargs)
                     if not done:
                         at = asset_data['asset_type']
+                        tcom.passargs['retry_counter'] = tcom.passargs.get('retry_counter',0) +1
                         if at in ('model', 'material'):
                             download(asset_data, **tcom.passargs)
                         elif asset_data['asset_type'] == 'material':
@@ -503,7 +501,12 @@ def timer_update():  # TODO might get moved to handle all blenderkit stuff, not
                             download(asset_data, **tcom.passargs)
                         elif asset_data['asset_type'] == 'brush' or asset_data['asset_type'] == 'texture':
                             download(asset_data, **tcom.passargs)
-                print('finished download thread')
+                    if bpy.context.scene['search results'] is not None and done:
+                        for sres in bpy.context.scene['search results']:
+                            if asset_data['id'] == sres['id']:
+                                sres['downloaded'] = 100
+
+                utils.p('finished download thread')
     return .2
 
 
@@ -590,9 +593,15 @@ def download(asset_data, **kwargs):
     scene_id = get_scene_id()
 
     tcom = ThreadCom()
-
     tcom.passargs = kwargs
 
+    if kwargs.get('retry_counter',0) > 3:
+        sprops = utils.get_search_props()
+        sprops.report = f"Maximum retries exceeded for {asset_data['name']}"
+        utils.p(sprops.report)
+        return
+
+
     # incoming data can be either directly dict from python, or blender id property
     # (recovering failed downloads on reload)
     if type(asset_data) == dict:
@@ -654,7 +663,7 @@ def try_finished_append(asset_data, **kwargs):  # location=None, material_target
      This means probably wrong download, so download should restart'''
     file_names = paths.get_download_filenames(asset_data)
     done = False
-    print('try to append allready existing asset')
+    utils.p('try to append allready existing asset')
     if len(file_names) > 0:
         if os.path.isfile(file_names[-1]):
             kwargs['name'] = asset_data['name']
diff --git a/blenderkit/ui_panels.py b/blenderkit/ui_panels.py
index 88d14386..1a4b2e76 100644
--- a/blenderkit/ui_panels.py
+++ b/blenderkit/ui_panels.py
@@ -802,6 +802,12 @@ class VIEW3D_PT_blenderkit_downloads(Panel):
             row.label(text=asset_data['name'])
             row.label(text=str(int(tcom.progress)) + ' %')
             row.operator('scene.blenderkit_download_kill', text='', icon='CANCEL')
+            if tcom.passargs.get('retry_counter',0)>0:
+                row = layout.row()
+                row.label(text = 'failed. retrying ... ', icon='ERROR')
+                row.label(text = str(tcom.passargs["retry_counter"]))
+                
+                layout.separator()
 
 
 classess = (



More information about the Bf-extensions-cvs mailing list