Почему сервер Django dev не перезагружается?
Я использую django dev-серверы уже много лет. Я начинаю их с
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
- Django 3.2.6
- using pipenv to manage my virtual environment
Автозагрузка является функцией Django runserver и используется только в режиме разработки.
прочитайте это в Django docs:
Если вы используете Linux или MacOS и установили pywatchman и службу Watchman, для автозагрузки сервера будут использоваться сигналы ядра (а не ежесекундный опрос временных меток модификации файлов). Это позволяет повысить производительность больших проектов, сократить время отклика после изменения кода, более надежно обнаруживать изменения и снизить энергопотребление. Django поддерживает pywatchman 1.2.0 и выше.
.
Но в производственном режиме серверы запускаются файлом wsgi.py и управляются python-серверами, такими как gunicorn, uwsgi, ...
Эта функция не является предпочтительной в производственном режиме, поскольку вам может понадобиться изменить несколько файлов, и вы сохраняете их по одному, а автозагрузка может привести к появлению страниц с ошибками.