Retry skill installation every 5 minutes if default skill install fails
This prevents errors with having a spotty internet connection during default skill installationpull/1599/head
parent
5681d261d1
commit
596834dbc8
|
@ -280,16 +280,23 @@ class SkillManager(Thread):
|
||||||
default_names = set(chain(default_groups['default'],
|
default_names = set(chain(default_groups['default'],
|
||||||
default_groups[self.msm.platform]))
|
default_groups[self.msm.platform]))
|
||||||
|
|
||||||
|
default_skill_errored = False
|
||||||
|
|
||||||
def install_or_update(skill):
|
def install_or_update(skill):
|
||||||
"""Install missing defaults and update existing skills"""
|
"""Install missing defaults and update existing skills"""
|
||||||
if skill.is_local:
|
try:
|
||||||
skill.update()
|
if skill.is_local:
|
||||||
if skill.name not in installed_skills:
|
skill.update()
|
||||||
skill.update_deps()
|
if skill.name not in installed_skills:
|
||||||
installed_skills.add(skill.name)
|
skill.update_deps()
|
||||||
elif skill.name in default_names:
|
elif skill.name in default_names:
|
||||||
skill.install()
|
skill.install()
|
||||||
installed_skills.add(skill.name)
|
except Exception:
|
||||||
|
if skill.name in default_names:
|
||||||
|
nonlocal default_skill_errored
|
||||||
|
default_skill_errored = True
|
||||||
|
raise
|
||||||
|
installed_skills.add(skill.name)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
self.msm.apply(install_or_update, self.msm.list())
|
self.msm.apply(install_or_update, self.msm.list())
|
||||||
|
@ -298,13 +305,18 @@ class SkillManager(Thread):
|
||||||
|
|
||||||
self.save_installed_skills(installed_skills)
|
self.save_installed_skills(installed_skills)
|
||||||
|
|
||||||
|
if speak:
|
||||||
|
data = {'utterance': dialog.get("skills updated")}
|
||||||
|
self.ws.emit(Message("speak", data))
|
||||||
|
|
||||||
|
if default_skill_errored:
|
||||||
|
self.next_download = time.time() + 5 * MINUTES
|
||||||
|
return False
|
||||||
|
|
||||||
with open(self.dot_msm, 'a'):
|
with open(self.dot_msm, 'a'):
|
||||||
os.utime(self.dot_msm, None)
|
os.utime(self.dot_msm, None)
|
||||||
self.next_download = time.time() + self.update_interval
|
self.next_download = time.time() + self.update_interval
|
||||||
|
|
||||||
if speak:
|
|
||||||
data = {'utterance': dialog.get("skills updated")}
|
|
||||||
self.ws.emit(Message("speak", data))
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def _load_or_reload_skill(self, skill_path):
|
def _load_or_reload_skill(self, skill_path):
|
||||||
|
|
Loading…
Reference in New Issue