HACS可以理解为是Home Assistant的第三方插件库,可通过可视化操作的方式安装、更新插件。在更新HACS组件时,会因主机性能和网络环境原因会导致更新超时,出现如下报错:
Backing off async_download_file(...) for 0.2s (asyncio.exceptions.TimeoutError)
可通过以下几种解决方案,从不同角度尝试解决问题,由易到难:
1.设定DNS
通过将网关或设备DNS设置为114DNS或阿里DNS,可尽可能的将网络联通问题降到最低。
阿里DNS是:
223.5.5.5 223.6.6.6
114DNS是:
114.114.114.114 114.114.115.115
2. 通过修改HOSTS文件,手动指定IP
这是个进阶方法,需要先找到超时的域名,比如本例中就是github和raw.githubusercontent.com的域名。那么手动为这些域名指定本地连接最快的IP,则会在一定程度上解决这个问题。因为这个方法可以应用到很多问题上,具体如何操作后面会单独一篇文章写。
3. 修改本地执行的超时时间
这是一个最有效的方法,既然现在不是下载超时就是执行超时,那只需将超时的时间延长,基本就可以彻底解决问题了。
具体方法如下:
在HA的config目录下搜索“download.py”,打开文件搜索如下字段
async_timeout.timeout
将后面的60改为120或200,既将超时时间改为了120s或200s。
保存文件后,重启HA生效。再来试试更新HACS的组件吧,虽然依旧很慢,但基本不会再提示超时问题了,也能正常更新成功。
*要注意的是,HACS版本更新后,这个超时时间会被重置,还需要再次手动调整。