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

能否使用信号重启Django的manage.py runserver开发服务器?

Django runserver 是否支持通过信号重启?

Django自带的manage.py runserver不支持通过SIGHUP等信号实现重启,它对SIGHUP、SIGINT、SIGTERM的默认处理逻辑就是终止进程——这是由它的定位决定的:runserver仅作为本地开发服务器,没有设计生产级服务器的热重载/信号触发重启能力。

替代方案

  • 开发环境自动重载:runserver默认自带文件变更检测,当代码文件修改后会自动重启进程。如果该功能未生效,检查是否添加了--noreload参数,或确认文件系统的变更能被Django正常识别。
  • 自定义脚本实现信号重启:可以自行编写shell脚本监听HUP信号,收到信号后终止当前runserver进程并重新启动。示例脚本如下:
    #!/bin/bash
    PID_FILE="/tmp/django_runserver.pid"
    
    start_server() {
        python manage.py runserver 0.0.0.0:8000 &
        echo $! > "$PID_FILE"
    }
    
    # 捕获HUP信号,执行重启逻辑
    trap 'echo "Received HUP, restarting server..."; kill $(cat "$PID_FILE") 2>/dev/null; start_server' HUP
    
    start_server
    wait
    
    使用时运行该脚本,之后发送kill -HUP <脚本PID>即可触发重启。
  • 生产环境使用专业服务器:如果是生产场景,不要使用runserver,改用Gunicorn、uWSGI这类生产级服务器,它们原生支持SIGHUP信号触发工作进程重启,实现无间断服务的热重载。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 23:28:10