manage.py runserver часто перезагружается в производстве - PullRequest
0 голосов
/ 11 апреля 2020

Я написал Django 2.2 программу, которая хорошо работает на моем P C с Windows 10 и на моем VPS с CentOS 7.

Когда я изменил какой-то код в трех файлах, приложение продолжает работать локально, но странно себя ведет в prouduction.

Когда я запускаю

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

Почему это требуется?

Ответы [ 2 ]

1 голос
/ 11 апреля 2020

manage.py runserver предназначен только для разработки :

НЕ ИСПОЛЬЗУЙТЕ ЭТО СЕРВЕР В НАСТРОЙКЕ ПРОИЗВОДСТВА. Он не прошел аудит безопасности или тесты производительности. (И так оно и останется. Мы занимаемся созданием веб-фреймворков, а не веб-серверов, поэтому улучшение этого сервера для обработки производственной среды выходит за рамки Django.)

Добавьте сервер WSGI, такой как Gunicorn, Waitress или uWSGI, к своим зависимостям и запустите that , например :

gunicorn myproject.wsgi

Как правило, для развертывания Gunicorn в производственной среде вы не будете привязываться напрямую к порту 80, а вместо этого будете использовать что-то вроде Nginx.

0 голосов
/ 11 апреля 2020

Когда вы запускаете программу Django в рабочем состоянии, измените параметр DEBUG = True на DEBUG = False в settings.py.

...