为什么 Django 开发服务器不重新加载?

2023-11-29

我已经使用 django 开发服务器很多年了。我开始他们

python manage.py runserver

当我更改任何 python 代码时,它们会很好地重新启动。

现在我继承了别人的项目进行维护,无论出于什么原因,我更改了Python代码,服务器没有重新启动。我似乎找不到任何类型的配置选项会导致这种情况。

我没有--noreload标志设置,这是我的证明:

$ ps -ef | grep runserver
chris     290898  250765  1 11:55 pts/6    00:00:00 python manage.py runserver
chris     290914  290898  5 11:55 pts/6    00:00:01 /home/chris/.virtualenvs/my-webapp-4cLYw-9X/bin/python manage.py runserver

以前有人遇到过这个吗?

  • Python 3.9.5
  • 姜戈3.2.6
  • 使用 Pipenv 管理我的虚拟环境

UPDATE

更多信息...同样奇怪

该项目是这样设置的

src/manage.py
src/myproject (contains settings.py, urls.py, etc)
src/apps/app_one (contains models.py, tests.py, etc)
src/apps/app_two (contains models.py, tests.py, etc)

如果我编辑 src/myproject 下的任何文件,那么服务器将按预期重新启动。但是,如果我编辑 app_one 或 app_two 下的文件,则服务器不会重新启动。

更新#2

在它让我发疯之前复活它(可能为时已晚)。

I added django.utils.autoreload': {'level': 'DEBUG'}, to settings.LOGGING,现在我可以看到 Django 正在监视我的文件,因为我可以在日志中看到这一点:

[15/2/2022 10:58:14] django.utils.autoreload - 调试 [tick:392] 文件 /home/chris/OBFUSCATED/src/apps/account/models.py 以前 实时时间:1644940666.8954673,当前实时时间:1644940693.9396086

[15/2/2022 10:58:14] django.utils.autoreload - 调试 [notify_file_changed:366] /home/chris/OBFUSCATED/src/apps/account/models.py 通知 改变了。信号结果:[(, True), (,无)]。

然而,开发服务器没有重新启动。希望这对某人比对我更有意义。


UPDATE

这被固定在姜戈 3.2.13 and 姜戈 4.0.4

原答案

我也有类似的问题,这似乎是一个错误。我追踪到 Django 3.2.4(3.2.3 按预期工作)。

See the Django 3.2.4 发行说明. 这是错误修复这对我来说是坏事。

从 4.0.3 开始它仍然有问题。

UPDATE

就我而言,这是因为['']在 DIRS 中,如果要从环境中获取值,请使用过滤器:

TEMPLATES = [
    {
        "BACKEND": "django.template.backends.django.DjangoTemplates",
        "DIRS": filter(None, os.getenv("TEMPLATES_DIRS", "").split(",")),
...

我已经开了一个bug and a PR

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 Django 开发服务器不重新加载? 的相关文章

随机推荐