Debugging HTTP requests
-
I've been trying to make a simple HTTP request with my Atom Matrix.
I want to implement:A single Button Click sends a HTTP request and shows me the success or error state via the Matrix LEDs
But my problem is that the request seems to fail consistently and I couldn't print any information about the actual request. It seems as if it fails before or while executing the request. I was able to print the exception thrown:
[Errno 12] ENOMEM
Which looks like the Atom ran out of memory. But I'm confused why? The whole code snippet is already pretty small and barely does anything.from m5stack import * from m5ui import * from uiflow import * import wifiCfg import urequests gc.collect() rgb.set_screen([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]) def buttonA_wasPressed(): # global params wifiCfg.autoConnect(lcdShow=False) if wifiCfg.wlan_sta.isconnected(): try: print(urequests.request) req = urequests.request(method='GET', url='https://dummyjson.com/products/1', headers={}) print(req.text) print("stuff never get executed") # Show some green lights indicating success state rgb.set_screen([0x03ff33,0,0,0,0,0x03ff33,0,0,0x00ff33,0,0,0x03ff33,0x00bd26,0x00ff33,0,0,0x03ff33,0x00ff33,0x00ff33,0x03ff33,0,0,0x03ff33,0x03ff33,0x03ff33]) gc.collect() req.close() except Exception as e: print('Failed') print(str(e)) # Show some red lights indicating error state rgb.set_screen([0,0,0,0,0,0,0,0,0xff0000,0,0,0xff0000,0x9e0000,0xff0000,0,0,0xff0000,0xff0000,0xff0000,0xff0000,0,0,0xff0000,0xff0000,0xff0000]) pass btnA.wasPressed(buttonA_wasPressed)
This is the log after pushing the button on my Atom Matrix
<function request at 0x3ffe7220> Failed [Errno 12] ENOMEM
<function request at 0x3ffe7220>
proves that (some) request function is loaded
[Errno 12] ENOMEM
is the exception printed in the except blockThe Issue is clearly related to the request because if I remove the request, the success case is executed (green light etc.)
... try: print(urequests.request) #req = urequests.request(method='GET', url='https://dummyjson.com/products/1', headers={}) #print(req.text) print("stuff never get executed") # Show some green lights indicating success state rgb.set_screen([0x03ff33,0,0,0,0,0x03ff33,0,0,0x00ff33,0,0,0x03ff33,0x00bd26,0x00ff33,0,0,0x03ff33,0x00ff33,0x00ff33,0x03ff33,0,0,0x03ff33,0x03ff33,0x03ff33]) gc.collect() #req.close() ...
Context:
- I flashed the device with UIFlow_Matrix v1.12.9 (latest)
- I'm using Arduino Lab for Micropython to upload and execute code on the Atom Matrix because I found it to be the most reliable connection over USB and giving me a fast response through the console.