Я на самом деле никогда не использовал Celery, но я использовал многопроцессорность.
У Celery, похоже, есть несколько способов передачи сообщений (задач), в том числе способы, позволяющие запускать рабочих на разных машинах. Поэтому недостатком может быть то, что передача сообщений может быть медленнее, чем при многопроцессорной обработке, но, с другой стороны, вы можете распределить нагрузку на другие машины.
Вы правы, что многопроцессорная обработка может выполняться только на одном компьютере. Но, с другой стороны, связь между процессами может быть очень быстрой, например, с помощью разделяемой памяти. Также, если вам нужно обрабатывать очень большие объемы данных, вы можете легко читать и записывать данные с локального диска и на него и просто передавать имена файлов между процессами.
Я не знаю, насколько хорошо Celery справится с неудачами задач. Например, задача может никогда не завершиться, или может произойти сбой, или вы можете захотеть иметь возможность убить задачу, если она не завершена в определенный срок. Я не знаю, как трудно было бы добавить поддержку этого, если бы его там не было.
Многопроцессорность не поставляется с отказоустойчивостью из коробки, но вы можете создать ее самостоятельно без особых проблем.