You probably don't need event-driven architecture

I replaced my event-driven scheduler with a dumb 60-second loop

Event-driven was the bug. Polling was the fix.