With recent versions of Mojolicious, Mojo::DOM gained a lot of power that I have been excited to try, but haven't had the time for. Recently, I had a problem at my real job (in Engineering, Procurement, and Construction, or EPC for short) that I solved with Mojo::DOM (and other parts of Mojolicious) in a very short time – including learning how to use Mojo::DOM, which I had never done before.
$work, we have built an API with Dancer that generates PDF documents and XML files. This API is a critical component of an insurance enrollment system: PDFs are generated to deliver to the client in a web browser
immediately, and the XML is delivered to the carrier as soon as it becomes available. Since the XML often takes a significant amount of time to generate, the job is generated in the background so as not to tie up the
application server for an extended amount of time. When this was done, a homegrown process management system was developed, and works by
fork()ing a process, tracking its pid, and hoping we can later successfully
reap the completed process.
There have been several problems with this approach: - it's fragile - it doesn't scale - it's too easy to screw something up as a developer
In 2019, we have to ramp up to take on a significantly larger workload. The current solution simply will not handle the amount of work we anticipate needing to handle. Enter Minion.
Note: The techniques used in this article work equally well with Dancer or Dancer2.
Now that I have a Minion job queue, I need to take care of it properly. Are the workers working (have they seized the means of production)? Are jobs completing successfully? Are there any errors? What are they?