我如何修复 Python OSError: [Errno 99] Cannot assign requested address

问题:

绑定套接字时,你看到类似这样的错误消息

bind_error.txt
Traceback (most recent call last):
  File "run.py", line 91, in <module>
    server = start_server(loop, ('192.168.1.100', 8080))
  File "run.py", line 86, in start_server
    transport, server = loop.run_until_complete(t)
  File "/usr/lib/python3.8/asyncio/base_events.py", line 616, in run_until_complete
    return future.result()
  File "/usr/lib/python3.8/asyncio/base_events.py", line 1332, in create_datagram_endpoint
    raise exceptions[0]
  File "/usr/lib/python3.8/asyncio/base_events.py", line 1316, in create_datagram_endpoint
    sock.bind(local_address)
OSError: [Errno 99] Cannot assign requested address

解决方案

在我的情况下,问题是我尝试绑定特定 IP 地址 192.168.1.100但运行脚本的计算机没有在任何接口上配置该 IP 地址。

docker_bind_note.txt
server = start_server(loop, ('192.168.1.100', 8080))

所以我需要将绑定 IP 地址更改为 0.0.0.0 以监听任何 IP 地址,或者我需要将 192.168.1.100 更改为我运行脚本的主机计算机的 IP 地址。

Docker 容器 [Errno 99] Cannot assign requested address

注意对于 Docker 容器,你要么需要在 network_mode: host 中运行它们以使用主机的网络 systemd,要么需要绑定到容器的 IP 地址。除非使用 network_mode: host,否则你不能从容器绑定到主机的 IP 地址!但你可以从主机转发端口,绑定到特定 IP 地址。


Check out similar posts by category: Python