在运行Django时,StatReloader是什么?

时间:2019-04-24 13:51:12

标签: django

我刚刚使用Django 2.2创建了新的Python 3.7 virtualenv

每个runserver都会打印:

  

使用StatReloader监视文件更改

我在Django的文档等中找不到任何信息。

它与Django特别相关吗? 它与Django一起使用吗? 它能做什么? 为什么在PyCharm中将其打印为红色? 我应该注意点什么吗? 可以禁用它吗?

大家伙

3 个答案:

答案 0 :(得分:4)

只要您更改代码,django就会使用class自动重新加载开发服务器。

具体来说,是在get_reloader方法中确定的,其中watchman是linux / macOS的替代方案

  

如果您使用的是Linux或MacOS,并且同时安装了pywatchman和Watchman服务,则内核信号将用于自动重新加载服务器(而不是每秒轮询文件修改时间戳)。这样可以在大型项目上提供更好的性能,减少代码更改后的响应时间,更强大的更改检测功能,并减少功耗。

Runserver docs

不知道为什么它在pycharm中显示为红色,但是如果您确实想要,可以使用--noreload标志将其禁用

答案 1 :(得分:3)

在我的情况下,我在文件settings.py中将选项DEBUG = True更改为DEBUG = False,因为此选项可以正常工作。

settings.py中:

#SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

在docker中:

$ docker run  container_name 

Watching for file changes with StatReloader

settings.py之后:

#SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False 

在docker中:

$ docker run container_name
[24/Mar/2020 10:10:19] "GET /health HTTP/1.1" 200 5299

答案 2 :(得分:0)

运行开发服务器时使用--noreload标志

python manage.py runserver 0.0.0.0:8000 --noreload

引用为here