I had something similar happen in one of my ESP8266 projects (also running MicroPython). What I wound up doing was, every five wall clock minutes (maybe a bit sooner than that, for your case) I had my firmware do a local_networks = wifi.scan() just to exercise the wifi functionality. If that failed I have the code do gc.collect() followed by sys.exit(1), which causes the 8266 to reboot automatically.