See my answer on CherryPy interfering with turning off Twisted on Windows
In short, CherryPy handles the main loop by default, but this is definitely not necessary. Stop using quickstart and call engine.start without engine.block, and CP will start in its threads and leave the main thread for your other structure.
fumanchu
source share