Почему 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
Using the watchdog backend on macOS is better, especially with newer filesystems like APFS used on Apple Silicon.
Install the dependency:
pip install watchdog
Then run the server with:
python manage.py runserver --reload
I believe this happens because Apple Silicon handles file watching differently. So try to install watchdog
pip install watchdog
Django will automatically switch to Watchdog's better file watcher.
If it doesn't work, force it in settings.py
:
import sys
if sys.platform == 'darwin':
from django.utils.reloader import watchman
watchman.USE_WATCHMAN = True
The default watcher misses file changes on ARM Macs. Watchdog uses macOS-native APIs that actually work.