rabbitmq - это всего лишь способ обмена данными, сам по себе он поставленную задачу не решит. А вот dispy, судя по описанию и примерам из документации, для подобных задач может подойти, я бы попробовал.
Если же захочется накостылить собственное решение, то сокеты в принципе не так уж и нужны (хотя и их возможно использовать для взаимодействия). Можно, например, сделать web-сервис, в котором передавать файл с кодом или даже архив с кодом и данными. На той стороне обработчик положит всё это во временный каталог, запустит, когда вычисления завершатся - результат сольёт обратно серверу. Примерно так:
Сервер вызывает:
POST computational-node1/task
..код и/или данные..
получаем в ответ некий id - идентификатор задания - например, 123.
После этого нода запускает вычислительный процесс. По его окончанию дёргает сервер:
POST main-server/result/computational-node1/123
..результаты..
Ещё один вариант - загружать задание также архивом по scp, потом вызывать по ssh запуск скрипта и ожидать его завершения.
Возможны десятки вариаций толщины и радиуса изгиба костылей.