Cubehero, like many other web apps, depend on background workers to get many tasks done that you don’t want to do within a web request. These are usually longer running tasks, like sending an emails, calculating a score, updating information from a remote source, or in the case of Cubehero, rendering 3D models as images (among other things).
Whenever you upload files, either through the web interface or through git, it triggers code that finds files that need to be processed as a job. For example, when a new set of files are committed, we find any STL files and create a job to render the 3D model for each file.
However, not all jobs are independent of each other. Some jobs can only be run when others have been fully completed. For example, the rendering workers need an up-to-date copy of the file before they start rendering them. Then image files, regardless of whether they were generated or uploaded, need to be resized.
As we expand support of different file types, this overhaul of background workers will help make it easier to generate the images and data needed to render a web page. When the work is done ahead of time, you have a fast web experience.