一、导读
环境:OpenEuler、Windows 11、WSL 2
背景:代码在Linux中运行,Windows可以使用代理,而子系统不行,代码无法正常运行
时间:20250226
说明:实现LangGraph自动画图模块,报错,发现访问失败,此处记录一下如何配置
二、配置固定IP
众所周知,windows 会通过虚拟交换机给本机和 wsl2(Linux 子系统)分别分配 ip。于是本机重启或重启 wsl 服务的时候会重新分配 ip。之前所作的端口转发,监听之类的都会失效。
而如果你搜索 “如何固定 wsl 的 ip”,又会得到一系列复杂的配置方法。
且不说是否有用,但这一系列操作十分令人头疼。
但是,如果你的 windows 是 win11 22H2 以上,情况就不一样了。仅需一个配置文件,就能让 wsl 与 windows 共享 ip。
仅需在Windows中的C:\Users<your_username>目录下创建一个.wslconfig文件,然后在文件中写入如下内容
[experimental]
autoMemoryReclaim=gradual
networkingMode=mirrored
dnsTunneling=true
firewall=true
autoProxy=true
保存后重启一下 wsl 终端。
三、使用系统代理
由于LangGraph实现以下方法时,需要科学上网
graph.get_graph().draw_mermaid_png()
Windows主机可以实现,但是子系统却无法连接,所以执行代码时报错,如下:
Traceback (most recent call last):
File "/home/jack/langchain_test/venv/lib/python3.12/site-packages/requests/adapters.py", line 667, in send
resp = conn.urlopen(
^^^^^^^^^^^^^
File "/home/jack/langchain_test/venv/lib/python3.12/site-packages/urllib3/connectionpool.py", line 841, in urlopen
retries = retries.increment(
^^^^^^^^^^^^^^^^^^
File "/home/jack/langchain_test/venv/lib/python3.12/site-packages/urllib3/util/retry.py", line 519, in increment
raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='mermaid.ink', port=443): Max retries exceeded with url: /img/JSV7aW5pdDogeydmbG93Y2hhcnQnOiB7J2N1cnZlJzogJ2xpbmVhcid9fX0lJQpncmFwaCBURDsKCV9fc3RhcnRfXyhbPHA+X19zdGFydF9fPC9wPl0pOjo6Zmlyc3QKCWNoYXRib3QoY2hhdGJvdCkKCV9fZW5kX18oWzxwPl9fZW5kX188L3A+XSk6OjpsYXN0CglfX3N0YXJ0X18gLS0+IGNoYXRib3Q7CgljaGF0Ym90IC0tPiBfX2VuZF9fOwoJY2xhc3NEZWYgZGVmYXVsdCBmaWxsOiNmMmYwZmYsbGluZS1oZWlnaHQ6MS4yCgljbGFzc0RlZiBmaXJzdCBmaWxsLW9wYWNpdHk6MAoJY2xhc3NEZWYgbGFzdCBmaWxsOiNiZmI2ZmMK?type=png&bgColor=!white (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7f3043f010d0>: Failed to establish a new connection: [Errno 101] Network is unreachable'))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/jack/langchain_test/langchain_learn/langgraph_tt/langgraph_init.py", line 21, in <module>
qa_async_png = graph.get_graph().draw_mermaid_png()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/jack/langchain_test/venv/lib/python3.12/site-packages/langchain_core/runnables/graph.py", line 630, in draw_mermaid_png
return draw_mermaid_png(
^^^^^^^^^^^^^^^^^
File "/home/jack/langchain_test/venv/lib/python3.12/site-packages/langchain_core/runnables/graph_mermaid.py", line 214, in draw_mermaid_png
img_bytes = _render_mermaid_using_api(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/jack/langchain_test/venv/lib/python3.12/site-packages/langchain_core/runnables/graph_mermaid.py", line 336, in _render_mermaid_using_api
response = requests.get(image_url, timeout=10)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/jack/langchain_test/venv/lib/python3.12/site-packages/requests/api.py", line 73, in get
return request("get", url, params=params, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/jack/langchain_test/venv/lib/python3.12/site-packages/requests/api.py", line 59, in request
return session.request(method=method, url=url, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/jack/langchain_test/venv/lib/python3.12/site-packages/requests/sessions.py", line 589, in request
resp = self.send(prep, **send_kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/jack/langchain_test/venv/lib/python3.12/site-packages/requests/sessions.py", line 703, in send
r = adapter.send(request, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/jack/langchain_test/venv/lib/python3.12/site-packages/requests/adapters.py", line 700, in send
raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='mermaid.ink', port=443): Max retries exceeded with url: /img/JSV7aW5pdDogeydmbG93Y2hhcnQnOiB7J2N1cnZlJzogJ2xpbmVhcid9fX0lJQpncmFwaCBURDsKCV9fc3RhcnRfXyhbPHA+X19zdGFydF9fPC9wPl0pOjo6Zmlyc3QKCWNoYXRib3QoY2hhdGJvdCkKCV9fZW5kX18oWzxwPl9fZW5kX188L3A+XSk6OjpsYXN0CglfX3N0YXJ0X18gLS0+IGNoYXRib3Q7CgljaGF0Ym90IC0tPiBfX2VuZF9fOwoJY2xhc3NEZWYgZGVmYXVsdCBmaWxsOiNmMmYwZmYsbGluZS1oZWlnaHQ6MS4yCgljbGFzc0RlZiBmaXJzdCBmaWxsLW9wYWNpdHk6MAoJY2xhc3NEZWYgbGFzdCBmaWxsOiNiZmI2ZmMK?type=png&bgColor=!white (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7f3043f010d0>: Failed to establish a new connection: [Errno 101] Network is unreachable'))
1、查看系统IP地址
cat /etc/resolv.conf
# 输出
nameserver 172.19.80.1
2、配置代理
假设你的代理客户端在Windows上运行,并监听端口7890。你可以在Linux子系统中设置环境变量来使用这个代理,在相应的Linux子系统上执行
export ALL_PROXY="http://172.19.80.1:7890"
3、测试
curl -I https://mermaid.ink
正确输出
HTTP/1.1 200 Connection established
HTTP/2 200
date: Wed, 26 Feb 2025 09:00:00 GMT
content-type: text/html; charset=utf-8
access-control-allow-origin: *
vary: Origin
vary: Accept-Encoding
cf-cache-status: DYNAMIC
report-to: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v4?s=UnBNT0xCLu%2F7PNZfjxcGpPNX08S0duoZdfcchAth%2BnClmzQC3D7HiermCiM1COBz20iLq9HF7Eb4Zo4IFpwYfGScVcZh%2FBgkEyQ8U4ajOEILcKtYXOGdv%2Bdvuz6mlw%3D%3D"}],"group":"cf-nel","max_age":604800}
nel: {"success_fraction":0,"report_to":"cf-nel","max_age":604800}
server: cloudflare
cf-ray: 917ebe0738ef593d-IAD
alt-svc: h3=":443"; ma=86400
server-timing: cfL4;desc="?proto=TCP&rtt=9472&min_rtt=7325&rtt_var=4248&sent=6&recv=10&lost=0&retrans=0&sent_bytes=3425&recv_bytes=747&delivery_rate=269745&cwnd=231&unsent_bytes=0&cid=9f940513285c4823&ts=476&x=0"
再次运行代码,则可以实现图片生成了
1487

被折叠的 条评论
为什么被折叠?



