Puncte:1

Probleme de conexiune la rețea cu Python3 și bitcoinrpc în WSL2, dar nu și WSL1

drapel in

Rulez Ubuntu 20.04 pe Windows 10 folosind WSL2.

Încerc să mă conectez la serverul testnet bitcoin de pe mașina mea 127.0.0.1 prin Python

Scripturile Python funcționează bine pe Pycharm, Command Prompt și Powershell și până de curând funcționau bine în Ubuntu când l-am executat pe WSL1

După ce am trecut la WSL2 pentru Ubuntu, primesc următoarea eroare, în ciuda faptului că funcționează în același timp în CMD, PS și Pycharm. Se pare că există ceva care se blochează pe partea Ubuntu. Cum repar asta? Dezactivarea pornirii rapide a Windows nu a rezolvat această problemă.

Traceback (cel mai recent apel ultimul):
  Fișier „/home/lalexk/mpcs56600-work/Lab4/Lab4.py”, rândul 308, în <modul>
    run_lab_4()
  Fișier „/home/lalexk/mpcs56600-work/Lab4/Lab4.py”, rândul 236, în run_lab_4
    block_info = connect_rpc(which_port, rpc_username, rpc_password, block_to_get)
  Fișier „/home/lalexk/mpcs56600-work/Lab4/Lab4.py”, rândul 41, în connect_rpc
    returnează rpc_connection.getblock(block_hash)
  Fișierul „/home/linuxbrew/.linuxbrew/Cellar/[email protected]/3.9.6/lib/python3.9/site-packages/bitcoinrpc/authproxy.py”, rândul 132, în __call__
    self.__conn.request('POST', self.__url.path, postdata,
  Fișier „/home/linuxbrew/.linuxbrew/Cellar/[email protected]/3.9.6/lib/python3.9/http/client.py”, linia 1257, la cerere
    self._send_request(method, url, body, headers, encode_chunked)
  Fișierul „/home/linuxbrew/.linuxbrew/Cellar/[email protected]/3.9.6/lib/python3.9/http/client.py”, linia 1303, în _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  Fișierul „/home/linuxbrew/.linuxbrew/Cellar/[email protected]/3.9.6/lib/python3.9/http/client.py”, linia 1252, în anteturile finale
    self._send_output(message_body, encode_chunked=encode_chunked)
  Fișierul „/home/linuxbrew/.linuxbrew/Cellar/[email protected]/3.9.6/lib/python3.9/http/client.py”, linia 1012, în _send_output
    self.send(msg)
  Fișier „/home/linuxbrew/.linuxbrew/Cellar/[email protected]/3.9.6/lib/python3.9/http/client.py”, linia 952, în trimitere
    self.connect()
  Fișierul „/home/linuxbrew/.linuxbrew/Cellar/[email protected]/3.9.6/lib/python3.9/http/client.py”, linia 923, în connect
    self.sock = self._create_connection(
  Fișierul „/home/linuxbrew/.linuxbrew/Cellar/[email protected]/3.9.6/lib/python3.9/socket.py”, linia 843, în create_connection
    ridica greseala
  Fișierul „/home/linuxbrew/.linuxbrew/Cellar/[email protected]/3.9.6/lib/python3.9/socket.py”, linia 831, în create_connection
    sock.connect(sa)
ConnectionRefusedError: [Errno 111] Conexiune refuzată
Puncte:0
drapel vn

Nu sunt deloc familiarizat cu aceste scripturi, dar se pare că spuneți că serverul Bitcoin rulează pe gazda dvs. Windows și încercați să vă conectați la el la 127.0.0.1 din interiorul WSL2. Asta ar explica, cel puțin, ceea ce trăiești.

Diferența dintre WSL1 și WSL2 în acest caz este:

  • WSL1 a partajat rețeaua Windows într-un mod foarte simplu. O instanță WSL1 are aceeași adresă IP ca cea a gazdei sale Windows și 127.0.0.1/gazdă locală din interior WSL1 este același cu Windows gazdă locală. Acționează ca o rețea cu punte.

  • WSL2, pe de altă parte, rulează într-un mediu mai virtualizat, utilizând în primul rând elemente ale hipervizorului Windows Hyper-V. Rețeaua sa este pe o NIC virtuală care rulează NAT in spate gazda Windows. 127.0.0.1/gazdă locală se referă la adaptorul de rețea virtuală WSL2, nu cel al gazdei sale Windows.

Soluția ar trebui să fie destul de simplă. Utilizați fie:

  • Adresa gazdei Windows (de ex. 192.168.1.10)
  • Adresa routerului virtual pe care Hyper-V o configurează, care poate fi determinată ip r l implicit în WSL.
  • Sau numele mDNS pentru acel router virtual. Acesta este „Numele computerului” Windows urmat de .local. Dacă trebuie să determinați acel nume din interiorul WSL2, puteți utiliza:
    echo "$(powershell.exe '[Consola]::Write($env:COMPUTERNAME)').local"
    

Dacă înțeleg greșit configurația dvs. și asta nu funcționează, anunțați-mă și putem clarifica configurația.

Tennis Tubbies avatar
drapel in
Multumesc mult, ai ajutat enorm. Văd de ce nu funcționează acum.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.