Opraviť chybu zásuvky Python 48

Chyba zásuvky 48 je chyba v jazyku Python, ktorá sa spustí, keď sa proces pokúsi naviazať na port, ktorý sa už používa.

Čo spôsobuje chybu „socket.error: [Errno 48] Address already in used“ chyba?

Po krátkom výskume sme zistili, že príčiny sú:

  • Proces viazaný na port:Kedykoľvek sa na serveri vytvorí proces, port ho použije na komunikáciu s internetom. Prístav je ako hostiteľ, ktorý dokáže zabávať jedného hosťa po druhom. Ak však nezadáte port, server ho iba vytvorí na predvolenom porte. Pri ďalšom vytváraní procesu je potrebné zadať port, pretože predvolený port sa už používa.

Riešenie 1: Zadanie čísla portu

Chyba sa väčšinou spustí, keď sa osoba pokúsi viazať konkrétny proces na predvolený port a predvolený port je už naviazaný na iný proces. Preto v tomto kroku zadáme port, na ktorom má byť proces ohraničený.

  1. Je pravdepodobné, že na vytvorenie procesu používate nasledujúci príkaz.
     $ python -m SimpleHTTPServer
  2. Namiesto toho použite tento príkaz na vytvorenie procesu.
     $ python -m SimpleHTTPServer (číslo portu)
  3. Počkajte na vytvorenie procesu a skontrolujte, či problém pretrváva.

Riešenie 2: Uvoľnenie portu

Ak je port už používaný iným procesom, nový proces nebude na danom porte fungovať. Preto v tomto kroku uvoľníme port ukončením predchádzajúceho procesu a následným spustením nového. Pre to:

  1. Pomocou nasledujúceho príkazu môžete uviesť zoznam procesov, ktoré používajú konkrétny port.
    $ ps -fA | grep python
  2. Argument príkazu bude vyzerať asi ako v nasledujúcich riadkoch.
     601 88234 12788 0 21:53 ttys000 0: 00,16 python -m SimpleHTTPServer
  3. Z toho je kód procesu, ktorý použijeme na zabitie, „88234“.
  4. Na ukončenie procesu použite nasledujúci príkaz.
    zabiť 88234

    Prípadne môžete tento príkaz zabiť pomocou nasledujúceho príkazu.

    sudo kill -9 PID
  5. Teraz môžete proces viazať na tento port pomocou nasledujúceho príkazu.
     $ python -m SimpleHTTPServer (číslo portu)
  6. Proces sa teraz vytvorí.

Riešenie 3: Reštartovanie Raspberry Pi (iba pre Raspberry Pi)

Tejto chyby sa môžete zbaviť na Raspberry Pi reštartovaním Raspberry Pi alebo zabitím terminálového plášťa. Raspberry Pi niekedy nedokáže procesy automaticky zabiť a spustí túto chybu kvôli predchádzajúcim procesom, ktoré už na portoch bežia.