如何永久运行Python服务端代码?附socket服务示例
Python Socket服务永久运行方案
你写的是基于原生TCP Socket的聊天室服务,不需要依赖Web服务器托管即可实现永久后台运行,核心思路是通过系统级进程守护工具保证程序后台驻留、异常退出自动重启、开机自动启动,具体方案按使用场景分以下几种:
前置修改
首先调整代码里的监听配置:如果需要局域网/公网设备访问服务,把代码中host = '127.0.0.1'修改为host = '0.0.0.0',默认的127.0.0.1仅允许本机访问。修改后将代码保存为chat_server.py放到固定目录,避免后续文件被误删导致服务失效。
生产环境稳定方案
Linux系统(服务器首选)
用系统自带的Systemd做进程守护,稳定性最高,不需要额外安装第三方工具:
- 创建服务配置文件,执行命令
sudo nano /etc/systemd/system/chat-server.service,写入以下配置,注意把用户名、路径替换成你自己的实际信息:
[Unit] Description=Python Chat Room Service After=network.target [Service] User=你的系统登录用户名 WorkingDirectory=你的chat_server.py所在目录绝对路径 ExecStart=/usr/bin/python3 你的chat_server.py所在目录绝对路径/chat_server.py Restart=always RestartSec=3 [Install] WantedBy=multi-user.target
- 依次执行以下命令加载配置、启动服务、设置开机自启:
sudo systemctl daemon-reload sudo systemctl start chat-server sudo systemctl enable chat-server
- 日常运维命令:
- 查看服务运行状态:
sudo systemctl status chat-server - 实时查看服务输出日志:
sudo journalctl -u chat-server -f - 重启服务:
sudo systemctl restart chat-server - 停止服务:
sudo systemctl stop chat-server
- 查看服务运行状态:
Windows系统
- 临时后台运行(无自启、无异常重启):在代码所在目录打开命令提示符,执行
pythonw chat_server.py即可后台运行,无控制台窗口,需要停止时直接在任务管理器中找到对应pythonw进程结束即可。 - 永久稳定运行:下载nssm工具,将脚本注册为Windows系统服务,配置服务启动类型为「自动」,设置服务失败后自动重启即可,效果和Linux下的Systemd一致。
临时测试方案
如果只是本地调试临时需要后台运行,不需要开机自启和异常重启,可以用终端复用工具:
- Linux/macOS安装
tmux后执行以下命令:
# 创建名为chat的后台会话 tmux new -s chat # 在会话中启动服务 python3 chat_server.py # 按快捷键Ctrl+B 再按D即可退出当前会话,服务会在后台持续运行 # 需要回到会话查看输出时执行 tmux attach -t chat
- Windows可以直接用PowerShell的
Start-Process pythonw -ArgumentList chat_server.py命令实现后台启动。
关于Web服务器部署的说明
你写的是自定义TCP协议的Socket服务,不是基于HTTP的Web应用,Nginx、Apache这类常规Web服务器无法直接托管运行你的代码。如果后续需要做公网暴露、流量限流、多实例负载均衡,可以配置Nginx的TCP层转发规则将指定端口的流量转发到你的服务,服务本身的常驻运行不需要依赖Web服务器。
注意:当前代码没有做并发限制、异常捕获、输入校验、身份鉴权逻辑,直接暴露到公网运行存在安全风险,建议仅在本地或可信局域网环境使用。
内容的提问来源于stack exchange,提问作者Gomenburu
相关产品推荐
相关产品推荐

