socket.error: [Errno 48] Naslov je že v uporabi
Poskušam vzpostaviti strežnik s pythonom iz terminala mac.
Navigiram se do lokacije mape in uporabim:
python -m SimpleHTTPServer
Toda to mi da napako:
socket.error: [Errno 48] Address already in use
Pred tem sem odprl povezavo z istim ukazom za drugo spletno stran na drugem mestu v mojem računalniku.
195
3
Na privzeta vrata (8000) je že vezan proces. Če ste že prej zagnali isti modul, je najverjetneje ta proces še vedno vezan na ta vrata. Najprej poskusite poiskati drugi proces:
Argumenti ukaza so vključeni, tako da lahko odkrijete tistega, ki izvaja
SimpleHTTPServer
, če je aktivnih več kot en procespython
. Morda boste želeli preveriti, alihttp://localhost:8000/
še vedno prikazuje seznam imenikov za lokalne datoteke.Druga številka je številka procesa; zaustavite strežnik tako, da mu pošljete signal:
To pošlje standardni signal
SIGTERM
; če se proces ne odziva, boste morda morali namesto tega uporabiti strožje metode, kot je pošiljanje signalaSIGKILL
(kill -s KILL
alikill -9
). Za več podrobnosti glej Wikipedija.Strežnik lahko zaženete tudi na različnih vratih, tako da v ukazni vrstici navedete alternativna vrata:
nato dostopajte do strežnika kot
http://localhost:8910
; kjer je8910
lahko katero koli število od 1024 naprej, če vrata še niso zasedena.Enostavna rešitev:
8080
:V Pythonu lahko uporabite tudi naslednja najvišja razpoložljiva vrata, če naredite nekaj podobnega:
Če morate enako narediti za druge pripomočke, bo morda bolj priročno uporabiti skripto bash:
To nastavite kot izvršilni program z imenom
get-free-port
in lahko naredite nekaj takega:To ni tako zanesljivo kot izvirni pristop Pythona, ker skripta bash ne zajame vrat - drug proces lahko zajame vrata pred vašim procesom (race condition) - vendar je lahko še vedno dovolj uporabno, če uporabljate orodje, ki nima lastnega pristopa try-try-again.