问题描述
类似的问题文字描述如下:
requests.exceptions.ConnectionError: HTTPSConnectionPool(host=‘huggingface.co 2’, port=443): Max retries exceeded with url: /api/whoami-v2 (Caused by NewConnectionError(’<urllib3.connection.HTTPSConnection object at 0x7f54241c0520>: Failed to establish a new connection: [Errno -2] Name or service not known’))
MaxRetryError: HTTPConnectionPool(host='127.0.0.1', port=51379): Max retries exceeded with url: /session/2e64d2a1-3c7f-4221-96fe-9d0b1c102195/window (Caused by ProtocolError('Connection aborted.', error(111, 'Connection refused')))
原因分析
这是一个很常见的问题,其实就是连不上huggingface,没有办法与huggingface建立网络链接,这个的解决问题看起来是很好解决的。
解决办法
第一种办法,用代理服务器
这个教程比较多,由于平台限制无法展开。
ok,一般来说到这,再次执行程序就解决了,但有的就还不行,再次执行程序依然会报错
第二种办法,使用proxychains来强制使用指定代理
能想到这种办法是因为在代码里能给的模型走代理是可以拉取到的,但是代码却没有拉取到,说明代码是没用走代理的,这个时候我们只需要强制让代码走指定代理就可以了,而这个就要用到linux下的全局代理工具proxychain。
第一步,下载安装proxychains
sudo apt-get install -y proxychains
第二步,配置proxychains
sudo vim /etc/proxychains.conf
or
sudo vi /etc/proxychains.conf
配置信息根据自己情况进行配置即可
# Examples:
#
# socks5 192.168.67.78 1080 lamer secret
# http 192.168.89.3 8080 justu hidden
# socks4 192.168.1.49 1080
# http 192.168.39.93 8080我第一次配置的是
socks4 127.0.0.1 7890
第二次配置的是
http 192.168.117.180 7890
配置信息如图:
但是需要注意的是,如果按照第二种配置方式,则需要打开的Allow LAN,第一种配置方式则是不需要也可以正常运行的。(在这里也无法放整图,按指示即可查看到:clah->general->Allow LAN->打开开关就可以了)
第三步,执行python文件,这个时候需要在命令行前加proxychains
proxychains python inference.py --cfg configs/config.yaml --ckpt checkpoints/laion10M_epoch_6_model_ema_only.ckpt --save_path generated_images --glyph_instructions glyph_instructions.yaml --num_samples 4
后记
提问1:为什么可以用socks ?
HTTP代理和SOCKS代理都是常见的代理服务,主要划分依据为根据协议的不同而进行划分的;本文我们就为大家解答一下什么是HTTP代理和SOCKS代理,以及他们的区别是什么?
HTTP代理——全称为【HyperText Transfer Protocol代理】,是一种基于HTTP协议的代理服务器。 它主要用于HTTP请求的转发和缓存,能够解析HTTP报文,并根据请求的目标URL进行相应的转发。 HTTP代理可以根据客户端的请求进行过滤、修改或拦截,允许或禁止特定的访问请求。 由于其基于HTTP协议,HTTP代理主要应用于Web浏览器的代理设置,使得浏览器可以通过代理服务器访问互联网资源。
SOCKS代理——全称为【SOCKS(Socket Secure)代理】,是一种通用的代理协议,不限于特定的应用层协议。它可以处理任何类型的网络流量,包括HTTP、FTP、SMTP等等。SOCKS代理主要工作在传输层,通过建立TCP或UDP连接,将客户端的请求传递给目标服务器。SOCKS代理不解析或修改传输的数据,只是起到中转的作用,将请求和响应直接传递给客户端和服务器之间的连接。
从功能和应用场景上来看,HTTP代理更加适用于Web浏览器的代理设置。它可以进行高级的Web过滤和内容控制,允许或禁止特定的URL或域名访问,实现网页内容的过滤和访问控制。同时,HTTP代理还可以提供缓存功能,减少网络流量和提高访问速度。因此,在需要对Web浏览器的请求进行精细控制和优化的情况下,HTTP代理是一个较好的选择。
而SOCKS代理则更加通用和灵活。它适用于各种应用程序的代理设置,可以处理不同协议的网络流量。SOCKS代理可以实现全局的代理设置,使得所有的应用程序都能通过代理服务器进行访问,无需单独设置每个应用程序的代理参数。对于一些需要通过代理服务器实现隧道连接或跨越防火墙的应用场景,SOCKS代理是一个较为合适的选择。
所以根据这样来说,我的第一种配置方法是完全可以的,在实际执行中也是可以下载的,也就是可以连接huggingface并执行下载任务。
提问2:为什么要用打开的Allow LAN?
我们先来看的Allow LAN是干什么的和使用方法
观察上面的图我们就能看出来,配置的代理路径是我们在局域网下的ip地址,所以对于代理软件来说,必须允许局域网,否则可能无法映射到。
这样看来这个原因就比较说的过去了,但同时也解释了为什么socks配置127.0.0.1但不用打开的Allow LAN也能work了,因为配置的环回地址不仅仅在局域网才有用嘛。
完结撒花
人一旦脑子里装着星辰大海,就很难被世俗的快乐满足。