refactor consumers
worker and dispatcher no longer run in separate processes, instead the flask app will control the dispatcher and the dispatcher just runs jobs on its own
unit tests for dispatcher and worker