Topic: OSError: [Errno 48] Address already in use  (Letto 174 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline fatopeo

  • python unicellularis
  • *
  • Post: 12
  • Punti reputazione: 0
    • Mostra profilo
OSError: [Errno 48] Address already in use
« il: Gennaio 07, 2022, 19:55 »
Riguardo all'errore in oggetto inerente Flask, in rete ho trovato mille suggerimenti che mi hanno fuorviato, confuso e fatto perdere un sacco di tempo, per cui vi posto la mia soluzione affinchè vi possa essere utile in futuro:
1) da terminale
Citazione
$ lsof -P -i :5000
e dovreste avere un output simile
Citazione
COMMAND  PID            USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
Python  2533 user    3u  IPv4 0x4f091cf89bb6252f      0t0  TCP localhost:5000 (LISTEN)
Python  2534 user   3u  IPv4 0x4f091cf89bb6252f      0t0  TCP localhost:5000 (LISTEN)
Python  2534 user   4u  IPv4 0x4f091cf89bb6252f      0t0  TCP localhost:5000 (LISTEN)
2) basta prendere il primo PID e da terminale:
Citazione
$ kill -9 2533

N.B. I PID indicati (2533 e 2534) sono solo esemplificativi, per cui ricordatevi di indicare quello ottenuto col precedente comando.

Hasta luego!
« Ultima modifica: Gennaio 07, 2022, 19:58 da fatopeo »

Offline nuzzopippo

  • python sapiens
  • *****
  • Post: 607
  • Punti reputazione: 0
    • Mostra profilo
Re:OSError: [Errno 48] Address already in use
« Risposta #1 il: Gennaio 08, 2022, 10:46 »
Mai provato Flask, ma così, ad occhio e croce direi che quell'errore sia dovuto ad un socket che cerca di aprire una porta già occupata da un'altra applicazione, domanda:
Quando avvii un web server flask di sviluppo non lo chiudi alla fine della Tua applicazione?

Sbaglierò ma ho il sospetto che sia quella l'origine del problema, ossia che cerchi di avviare un web-server flask mentre un altro è già in funzione, col kill del processo lo sbatti giù ma, forse, converrebbe le Tue applicazioni facessero prima una verifica in merito per decidere se avviare il server ovvero connettersi soltanto.

Offline fatopeo

  • python unicellularis
  • *
  • Post: 12
  • Punti reputazione: 0
    • Mostra profilo
Re:OSError: [Errno 48] Address already in use
« Risposta #2 il: Gennaio 08, 2022, 11:06 »
Ciao nuzzopippo.
Hai perfettamente centrato il problema e tutto viene spiegato nella documentazione di Flask: https://flask.palletsprojects.com/en/2.0.x/server/#address-already-in-use.  Il fatto è che sto imparando ad usare Flask e non so ancora come fare da codice il controllo che mi hai suggerito.  Il web server flask si chiude con Ctrl + C come indicato anche in avvio nel terminale, ma il problema è che spesso sbadatamente chiudo il terminale senza chiudere prima il web server Flask con Ctrl + C, per cui quando lo riavvio, si verifica l'errore indicato e dato che il modo per risolvere è quello descritto, mi sembrava utile e giusto condividerlo con voi.

Offline nuzzopippo

  • python sapiens
  • *****
  • Post: 607
  • Punti reputazione: 0
    • Mostra profilo
Re:OSError: [Errno 48] Address already in use
« Risposta #3 il: Gennaio 08, 2022, 12:35 »
Il fatto è che sto imparando ad usare Flask e non so ancora come fare da codice il controllo che mi hai suggerito. ...

hai provato con "nomeapp.run(debug=True)", se ho compreso bene dovrebbe re-inizializzare il server, oltre che attivare il debuger ed impostare il tutto in "development mode", in modo da non inteferire con eventuali ambienti di produzione, magari tale modalità potrebbe andarti bene, vedi in fondo alla pagine che hai messo in link nel Tuo precedente post.