Почему Django не выполняет горячую перезагрузку на Mac M1?
У меня есть приложение на Django. Когда я пользовался компьютером Intel Mac, его функция горячей перезагрузки работала. Однако год назад я перешел на один из новых компьютеров Mac и теперь не могу выполнить его горячую перезагрузку.
Вот мой settings.py:
Когда я запускаю сервер (python3 manage.py runserver
):
Watching for file changes with StatReloader
Performing system checks...
April 18, 2025 - 02:29:48
Django version 3.2.13, using settings 'settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
Каждый раз, когда я обновляю какой-либо файл .py, я ожидаю, что сервер перезагрузится, но этого не происходит.
Вы можете установить uvicorn
пакет для перезагрузки, который также имеет другие интересные функции, такие как -
перезагрузить
определение порта
определение хоста
назначение работников (процессов)
uvicorn your_app_name.wsgi:application --host 0.0.0.0 --port 8000 --reload --workers 4
для выполнения ваших требований вам будет достаточно этой команды
uvicorn your_app_name.wsgi:application --reload
Лучше использовать серверную часть watchdog в macOS, особенно с новыми файловыми системами, такими как APFS, используемыми в Apple Silicon.
Установите зависимость:
pip install watchdog
Затем запустите сервер с помощью:
python manage.py runserver --reload
Я полагаю, это происходит потому, что Apple Silicon по-другому обрабатывает просмотр файлов. Поэтому попробуйте установить watchdog
pip install watchdog
Django автоматически переключится на улучшенный режим просмотра файлов Watchdog.
Если это не сработает, подключите его принудительно. settings.py
:
import sys
if sys.platform == 'darwin':
from django.utils.reloader import watchman
watchman.USE_WATCHMAN = True
Программа наблюдения по умолчанию пропускает изменения файлов на компьютерах Mac с операционной системой ARM. Watchdog использует собственные API для macOS, которые действительно работают.