Processing Asynchronous Jobs - QutEcoacoustics/baw-server GitHub Wiki
Asynchronous Jobs
Resque
Asynchronous jobs are implemented using Resque. This gem wraps a redis-based data store and rake-based worker system. Items of work (Jobs) are queued onto named queues stored in redis, with the name of the class that performs the processing and the arguments for the class's perform
method.
Queues
A queue is a collection of jobs. Each queue contains unique jobs of the same type. Queue names are specified by Action
classes in baw-workers.
To add items to a queue, use the enqueue
method provided by the relevant action
class. This will ensure that the parameters are validated and the correct queue name is used.
Each environment has a different queue suffix, and each type of job has a dedicated queue prefix. For example, the MediaAction
class can process audio file cutting and spectrogram generation. The jobs it creates can only be queued on to a media
queue: media_production
, media_staging
, media_development
.
Action classes and Workers
Action
classes define the processing a worker will perform. A worker is a rake task that runs indefinitely. Action classes define:
- the
queue
they will enqueue to and dequeue from - a
perform
method which processes a single job - an
enqueue
method that provides an easy way to queue a new job