For my embedded needs, I've relied heavily on TurboLua, which I find really kicks some serious butt:

https://turbo.readthedocs.io

What's great is that signals and fd_sets are supported, so it can really tie the web services and the hardware together nicely. I can easily wire up GPIO, for example.

I haven't dug into Microdot yet - but are there similar mechanisms? I love my Lua projects based on TurboLua, but wouldn't mind seeing some python chops get sharpened, same-wise ...

Edit: I dug in, and I guess the things I want are to be found in the python batteries included anyway .. plus, Microdot is a very small tack-on to microPython, and a pleasure to read ..

Right. Microdot just gives you the support to build the web application. This is built on top of the standard asyncio Python library, so you are likely to find good support for most tasks in the ecosystem.

related: Python has had async for 10 years – why isn't it more popular? - https://news.ycombinator.com/item?id=45106189 - Sep, 2025 (293 comments)

It's important to note that for most small devices that run MicroPython asyncio is the only available method of concurrency.

These devices have no concept of processes, your application is the only thing that runs. Most devices do not support threads, and those that do have really big limitations. Like for example, a device with two cores would allow you to spawn just one thread, to run on the second core and that's it. This is due to the lack of a proper operating system with a scheduler that can move threads in and out of the CPU.

Yes .. alas .. eLua doesn’t natively handle multi-core execution, so any cross-CPU functionality requires custom integration. It is is small, light, and tight as things go - but nevertheless, coroutines and core-specific tasking can yield benefits in the power-consumption stats, too.

I will definitely push microPython for some use where it'll fit ..