0

我编写了一个 Django 2.2 程序,该程序在运行 Windows 10 的 PC 和运行 CentOS 7 的 VPS 中运行良好。

当我更改三个文件中的一些代码时,该应用程序继续在本地工作,但在生产中表现得很奇怪。

当我跑

python manage.py runserver 0.0.0.0:80

在我的服务器上,我得到以下响应:

***\a.py changed, reloading.
Watching for file changes with StatReloader


***\b.py changed, reloading.
Watching for file changes with StatReloader


***\c.py changed, reloading.
Watching for file changes with StatReloader


***\a.py changed, reloading.
Watching for file changes with StatReloader


***\b.py changed, reloading.
Watching for file changes with StatReloader

我在部署之前修改了这些文件,但它们不应该在站点运行时更改。

添加--noreload标志可以防止这种情况:

python manage.py runserver --noreload 0.0.0.0:80

为什么需要这个?

4

2 回答 2

1

manage.py runserver仅用于开发

请勿在生产环境中使用此服务器。它没有经过安全审计或性能测试。(这就是它会一直存在的方式。我们的业务是制作 Web 框架,而不是 Web 服务器,因此改进此服务器以使其能够处理生产环境超出了 Django 的范围。)

将 Gunicorn、Waitress 或 uWSGI 等 WSGI 服务器添加到您的依赖项并运行例如

gunicorn myproject.wsgi

通常,要在生产环境中部署 Gunicorn,您不会直接绑定到端口 80,而是使用 Nginx 之类的东西

于 2020-04-11T13:42:23.513 回答
0

当您在生产环境中运行 Django 程序时,请将 settings.py 中的 DEBUG = True 选项更改为 DEBUG = False。

于 2020-04-11T13:55:44.897 回答