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

Bottle框架Python服务开机启动失败问题求助

解决Bottle服务开机自启动时无法绑定IP的问题

从你的日志和描述来看,问题的核心很明确:系统开机时,你的网卡还没获取到192.168.1.103这个IP地址,导致Bottle服务尝试绑定该地址时失败。手动启动服务正常是因为此时网络已经完全就绪,IP已经分配完成。

下面是几个针对性的解决方案,按推荐程度排序:

方案1:绑定到所有网络接口(最推荐)

把Python代码里的绑定地址从固定IP改成0.0.0.0,这样服务会监听系统上所有可用的网络接口,不管IP是静态还是动态分配的,开机时只要有网络接口启动就能成功绑定:

run(host='0.0.0.0', port=8080)

这个方案最灵活,完全避开了开机时IP未就绪的问题,而且不影响你通过192.168.1.103访问服务(只要该IP分配给了你的机器)。

方案2:让systemd等网络完全就绪后再启动服务

如果一定要绑定固定IP,可以修改你的advairMeter.service文件,让服务在网络完全在线(网卡已获取IP)之后再启动:

[Unit]
Description=Advair meter
After=network-online.target
Wants=network-online.target

[Service]
ExecStart=/usr/bin/python3 server.py
Restart=always
WorkingDirectory=/home/saul/Projects/PythonProjects/medSched/

[Install]
WantedBy=multi-user.target
  • After=network-online.target:确保服务在网络完全就绪后启动
  • Wants=network-online.target:告诉systemd要等待网络在线目标完成

修改后需要重新加载systemd配置并重启服务:

sudo systemctl daemon-reload
sudo systemctl restart advairMeter.service

注意:这个方案可能会稍微延长开机时间,因为systemd会等待网络完全就绪。

方案3:配置静态IP

如果你的机器使用DHCP自动获取IP,开机时IP可能还没分配完成就触发了服务启动。可以把192.168.1.103设置为静态IP,这样系统开机时会直接分配该IP,服务启动时就能成功绑定。

具体的静态IP配置方法取决于你的Xubuntu版本(通常可以通过网络管理器或者编辑/etc/netplan下的配置文件完成)。

验证修改效果

不管用哪个方案,修改后执行以下命令确保服务开机自启:

sudo systemctl enable advairMeter.service

然后重启系统,用systemctl status advairMeter.service检查服务状态,或者用ss -tulpn | grep 8080确认端口是否被监听。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 17:48:15