Parallelize talking to docker nodes

Refactor to using concurrent futures to allow communication to each configured node in parallel. This means all nodes should be completed before the gunicorn worker timeout kicks in