Yes, watchdog timer could be an idea. The same can be done with a normal timer and calling machine.reset() when it fires.
However I was wondering if there was a more graceful way of handling this, e.g. interrupting just the hanging urequests.request() method and then continuing with the program without rebooting the whole device.