在运行Django时,StatReloader是什么?

Max*_*ore 9 django

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

runserver打印:

使用StatReloader监视文件更改

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

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

大thx

Say*_*yse 11

它是django用来在您更改代码时自动重新加载开发服务器的

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

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

Runserver文档

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

  • 它并不总是在那里。[在2019年1月添加](https://github.com/django/django/commit/c8720e7696ca41f3262d5369365cc1bd72a216ca#diff-46e69f287173eef41fcbfeba05501954) (3认同)
  • @MaxCore-具体来说,它是在1月14日添加的(([Commit](https://github.com/django/django/commit/c8720e7696ca41f3262d5369365cc1bd72a216ca#diff-46e69f287173eef41fcbfeba05501954R577)),所以是,根据[2.2版本说明] (https://docs.djangoproject.com/zh-CN/2.2/releases/2.2/),它是为2.2添加的,尽管自动重新加载不是一项新功能 (3认同)

小智 8

in my case, I changed the option DEBUG= True for DEBUG=False in my file settings.py, since then its working.

before in settings.py:

#SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
Run Code Online (Sandbox Code Playgroud)

in docker :

$ docker run  container_name 

Watching for file changes with StatReloader

Run Code Online (Sandbox Code Playgroud)

after in settings.py:

#SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False 
Run Code Online (Sandbox Code Playgroud)

in docker:

$ docker run container_name
[24/Mar/2020 10:10:19] "GET /health HTTP/1.1" 200 5299
Run Code Online (Sandbox Code Playgroud)

  • @creyD 它似乎与 tty 有关;在 `docker-compose.yml` 中使用 `tty: true` (或使用 `-t` 作为 docker 选项)可以修复问题,即使 `DEBUG` 设置为 `True` 也是如此。 (3认同)

sar*_*eno 5

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

python manage.py runserver 0.0.0.0:8000 --noreload
Run Code Online (Sandbox Code Playgroud)

参考在这里