2 hours ago · Tech · 0 comments

Last year I moved the LLM streaming jobs in Chat with Work to Async::Job. It was fast. Genuinely fast. Fiber-based execution with Redis, thousands of concurrent jobs on a single thread. I was so convinced that I wrote a whole post about why async Ruby is the future for AI apps and recommended it to everyone. Then I started hitting walls. Async::Job doesn’t persist jobs. They go into Redis and they’re gone. Mission Control shows nothing. Background jobs in Rails are already quieter than the rest of your application – they fail without anyone noticing unless you go looking. Even with Honeybadger catching exceptions, I still want to see the full picture: which jobs are queued, which are running, which failed, what the system looks like right now. Without job persistence, you don’t get that. There’s also a design tension around CPU-bound work. Async::Job ties health signaling to the reactor, and for good reason – it detects event loop stalls. But when a job blocks the reactor, the health…

No comments yet. Log in to reply on the Fediverse. Comments will appear here.