I'm using this and it works great. We even managed to get it deploy to heroku, which was pretty magic.
Author of go-workers here. On SIGTERM, I stop accepting new work, and wait for all running workers to finish before halting.
If workers take longer than the 10 seconds Heroku gives you, go-workers uses reliable queueing (using http://redis.io/commands/brpoplpush) so the job will run again next time you start up the process.