Description
Trying to use adafruit_requests
to connect either the 5100S-based WIZnet Pico EVB running Adafruit CircuitPython 7.2.5 on 2022-04-06; Raspberry Pi Pico with rp2040
or the Adafruit Feather RP2040 with Adafruit Ethernet FeatherWing running Adafruit CircuitPython 7.2.5 on 2022-04-06; Adafruit Feather RP2040 with rp2040
to an Adafruit Feather ESP32-S2 TFT running HTTPServer
on an IPv4 (this repo simpletest example; no mDNS/hostname/FQDN involved) results in one of the following exception traces in all cases:
Either (less often):
Traceback (most recent call last):
File "code.py", line 211, in <module>
File "adafruit_requests.py", line 815, in get
File "adafruit_requests.py", line 685, in request
OutOfRetries: Repeated socket failures
Or (more often):
Traceback (most recent call last):
File "code.py", line 211, in <module>
File "adafruit_requests.py", line 815, in get
File "adafruit_requests.py", line 661, in request
File "adafruit_requests.py", line 529, in _get_socket
File "adafruit_wiznet5k/adafruit_wiznet5k_socket.py", line 251, in connect
File "adafruit_wiznet5k/adafruit_wiznet5k.py", line 574, in socket_connect
RuntimeError: Failed to establish connection.
I was initially going to file this issue in WIZnet, but a sanity check of trying to connect to the HTTPServer
from ESP32-S2 (e.g., Adafruit Feather ESP32-S2 TFT) also gets an exception every time, after about a minute. That surprised me, I may be doing something wrong. Maybe it's a Requests issue.
ESP32-S2 Client Code:
import traceback
import wifi
import socketpool
import ssl
import adafruit_requests
from adafruit_httpserver import HTTPServer, HTTPResponse
from secrets import secrets
wifi.radio.connect(secrets['ssid'], secrets['password'])
pool = socketpool.SocketPool(wifi.radio)
requests = adafruit_requests.Session(pool, ssl.create_default_context())
URLS = [
"http://wifitest.adafruit.com/testwifi/index.html",
"http://192.168.5.32", # LAN Apache server
"http://192.168.6.164", # LAN ESP32-S2 with adafruit_httpserver
]
for url in URLS:
try:
print(url)
with requests.get(url) as response:
print(response.status_code, response.reason)
except Exception as ex:
traceback.print_exception(ex, ex, ex.__traceback__)
Output:
code.py output:
http://wifitest.adafruit.com/testwifi/index.html
200 bytearray(b'OK')
http://192.168.5.32
200 bytearray(b'OK')
http://192.168.6.164
Traceback (most recent call last):
File "code.py", line 22, in <module>
File "adafruit_requests.py", line 720, in get
File "adafruit_requests.py", line 661, in request
File "adafruit_requests.py", line 512, in _get_socket
RuntimeError: Sending request failed
Both Espressif client and Espressif server are running:
Adafruit CircuitPython 7.2.5 on 2022-04-06; Adafruit Feather ESP32-S2 TFT with ESP32S2
Connecting to the HTTPServer
from a browser or curl
works fine.
Connecting to local Apache server at an IPv4 from any of these clients works fine.