The evok itself is not designed to handle the logic of your application. That's why we call it API.

It is using Tornado which means the server itself runs in one loop so you need to have all the program behavior ready before it is called mainLoop.start(). So if you run an infinite loop anywhere in evok, you stop everything else (reading, setting, all APIs, ...).

So I suggest using that APIs, it is much more easier to implement and you have the same functionality. But if you would REALLY want to do it in evok, you would have to prepare your program in a function, all tasks that would take more time would have to be decorated as coroutines and the call has to be yielded in order not to stop the main loop. The logic behind this is a little bit complicated to describe in one post :)