在出现错误后文件保存自动重启Django开发服务器

10 投票
2 回答
7806 浏览
提问于 2025-04-18 16:31

在写代码的时候,我通常有每分钟保存一次文件的习惯。有时候,这样会导致函数还没写完就保存了,结果让django开发服务器报错,像下面这样:

Unhandled exception in thread started by ...
Traceback
..
..
  File "/home/user/work/project/api/file.py", line 26
      def update_something(self, ) 
                               ^
SyntaxError: invalid syntax

不过,当代码运行正常时,django开发服务器会在我保存文件时自动重启,并且会显示我刚刚做的修改。那么,我该怎么让django服务器在出现错误后自动恢复,并在后续保存文件时自动重启呢?

现在,我每次都得在终端里停止 python manage.py runserver 命令,然后手动再运行一次。

我使用的是 django 1.5.3python 2.7.6

2 个回答

0

在Windows系统上,你可以使用一个批处理文件,写一个名为runserver.bat的批处理脚本。

@echo off
setlocal EnableDelayedExpansion
setlocal EnableExtensions

:WHILE_0
if 1 EQU 1 (
  python manage.py runserver
  sleep 2
  goto WHILE_0
)

然后你可以通过点击这个文件或者在命令行中执行它:

./runserver.sh
22

我用一个简单的bash脚本来处理这个问题。你可以用下面这行代码:

$ while true; do python manage.py runserver; sleep 2; done

这段代码会在尝试重启服务器之前等待2秒。你可以根据自己的需要调整这个时间。

我通常会把它写成一个名为 runserver.sh 的脚本,放在我的项目根目录下(也就是和manage.py在同一个文件夹里),然后把它添加到gitignore里。

while true; do
  echo "Re-starting Django runserver"
  python manage.py runserver
  sleep 2
done

如果你这样做了,记得运行 chmod +x runserver.sh,这样你就可以用下面的命令来执行它:

./runserver.sh

使用 Ctrl-c Ctrl-c 来退出。

撰写回答