Ответ 1
Как и все интересные вопросы, ответ зависит от этого.:)
Определенно можно придумать сценарий, в котором celeryd может использоваться двумя независимыми сайтами. Если несколько сайтов отправляют задачи на один и тот же обмен, а задачи не требуют доступа к какой-либо конкретной базе данных - скажем, они работают с адресами электронной почты или номерами кредитных карт или чем-то иным, кроме записи в базе данных, - тогда один сельдерей может быть достаточным. Просто убедитесь, что код задачи находится в общем модуле, который загружается всеми сайтами и сервером сельдерея.
Обычно, однако, вы обнаружите, что сельдерей нуждается в доступе к базе данных - либо он загружает объекты на основе идентификатора, который был передан в качестве параметра задачи, либо он должен написать некоторые изменения в базе данных, или, большинство часто, оба. И несколько сайтов/проектов обычно не используют базу данных, даже если они используют одни и те же приложения, поэтому вам необходимо оставить очереди задач отдельными.
В этом случае, как правило, произойдет то, что вы настроили одного брокера сообщений (например, RabbitMQ) с несколькими биржами. Каждый обмен получает сообщения с одного сайта. Затем вы запускаете один или несколько процессов celeryd где-то для каждого обмена (в настройках конфигурации celery вам нужно указать обмен. Я не верю, что celeryd может слушать несколько обменов). Каждый сервер celeryd знает свой обмен, приложения, которые он должен загрузить, и базу данных, к которой он должен подключиться.
Чтобы справиться с этим, я предлагаю заглянуть в cyme - он by @asksol и управляет несколькими экземплярами celeryd, на нескольких серверах если необходимо. Я не пробовал, но похоже, что он должен обрабатывать разные конфигурации для разных экземпляров.