Don't need to connect to the publish sockets, it will do that automatically when you ask for an event
Don't fire events for runner/wheel execution in the reactor

This creates more or less infinite loops if you have an entry in the reactor conf that acts on all events.

Yo dawg, I heard you liked events... :)
Remove the sleep, there is a better way to fix this

The problem you are running into is that since this is a daemon process when the function ends its effectively interpreter shutdown (which doesn't have to destroy all objects). By forcing the del of event it will call destroy() which sets linger and waits some period of time. This will speed up some process deaths (if zmq is quick enough) and stay around longer (potentially) if it can't send.