You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派重启自动运行Python3 Web服务器报errno 99错误如何解决

报错原因

[errno 99]: Cannot Assign Request Address 报错核心原因:自启任务执行时机早于Wlan0网卡IP分配完成时间,代码硬编码绑定的172.X.X.X此时未挂载到网卡,无法完成地址绑定。手动运行时系统网络已完成初始化,因此可正常启动。

解决方案

方案1:修改代码监听地址(最简单通用)

将代码中服务器绑定地址从固定IP改为0.0.0.0,表示监听所有网卡的所有可用IP,不受单网卡IP分配时机影响,访问效果和绑定固定IP完全一致。
修改代码中对应行:

# 原代码
server_address_httpd = ('172.X.X.X',8080)
# 修改后
server_address_httpd = ('0.0.0.0',8080)

修改后原有自启配置无需调整,重启即可正常生效。

方案2:保留固定IP绑定,调整自启逻辑

如果需要限制服务仅绑定指定172.X.X.X地址,可调整自启配置等待网络就绪后再启动服务:

rc.local配置调整

在原有Python启动命令前添加网络检测逻辑,示例如下(替换为你自己的脚本路径):

# 方式1:加固定延时,10秒足够大部分场景完成Wlan0 IP分配
sleep 10 && python3 /你的脚本绝对路径/server.py &
# 方式2:精准检测网络就绪,172.X.X.1替换为你网段的网关地址
until ping -c1 172.X.X.1 >/dev/null 2>&1; do sleep 1; done && python3 /你的脚本绝对路径/server.py &

crontab配置调整

给@reboot规则添加延时参数:

@reboot sleep 15 && python3 /你的脚本绝对路径/server.py

高可靠方案:systemd配置自启

无需手动加延时,系统会自动等待网络就绪后启动,且支持服务崩溃自动重启:

  1. 新建服务配置文件:sudo nano /etc/systemd/system/webserver.service
  2. 写入以下配置(替换为你自己的用户名和脚本路径):
[Unit]
Description=Python Web Server
After=network.target wpa_supplicant.service

[Service]
User=pi
ExecStart=/usr/bin/python3 /home/pi/你的脚本路径/server.py
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
  1. 执行命令启用服务:
sudo systemctl daemon-reload
sudo systemctl enable webserver.service

配置完成后重启即可生效。

内容的提问来源于stack exchange,提问作者sya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 11:00:02