Czy ten sam problem występuje, jeśli działasz w następujący sposób?
coverage run manage.py runserver --noreload
Bez innej konfiguracji rozpoczyna się za kulisami. Jeden proces uruchamia serwer, drugi szuka zmian kodu i restartuje serwer po wprowadzeniu zmian. Istnieje ryzyko, że prowadzisz kontrolę w procesie monitorowania, a nie w procesie udostępniania.
Spójrz na django/core/management/commands/runserver.py
i django/utils/autoreload.py
.
Aktualizacja: Pobiegłem polecenia pokrycia, a następnie wykorzystywane ps
i lsof
patrzeć na to co się dzieje. Oto co zauważyłem:
ps output:
UID PID PPID C STIME TTY TIME CMD
vinay 12081 2098 0 16:37 pts/0 00:00:00 /home/vinay/.virtualenvs/watfest/bin/python /home/vinay/.virtualenvs/watfest/bin/coverage run manage.py runserver
vinay 12082 12081 2 16:37 pts/0 00:00:01 /home/vinay/.virtualenvs/watfest/bin/python manage.py runserver
lsof output:
python 12082 vinay 5u IPv4 48294 0t0 TCP localhost:8000 (LISTEN)
IOW, nawet przed jakimkolwiek przeładunku istnieją dwa sposoby, a jednym nasłuchuje na porcie TCP nie jest ten, który jest uruchomiony na pokrycie.
Oto co widzę z --noreload
:
ps output:
UID PID PPID C STIME TTY TIME CMD
vinay 12140 2098 5 16:44 pts/0 00:00:00 /home/vinay/.virtualenvs/watfest/bin/python /home/vinay/.virtualenvs/watfest/bin/coverage run manage.py runserver --noreload
lsof output:
coverage 12140 vinay 4u IPv4 51995 0t0 TCP localhost:8000 (LISTEN)
Więc to nie jest oczywiste, dlaczego zasięg nie będzie działać w przypadku --noreload
. W bardzo krótkim teście z --noreload
otrzymałem informację o moim kodzie podglądu, co pokazuje następujący fragment:
festival/__init__ 8 7 13%
manage 9 4 56%
settings 33 1 97%
Zaktualizowałem moją odpowiedź. –