для 1,2 используйте несколько очередей и запускайте рабочих с -Q, чтобы указать, какую очередь прослушивать.
Также настройте CELERYD_PREFETCH_MULTIPLIER = 1, только для одной задачи за раз.
Чтобы получить длину очереди (протестировано с rabbitmq), вы можете использовать что-то вроде этого:
from kombu.connection import BrokerConnection
connection = BrokerConnection(BROKER_HOST, BROKER_USER...)
channel = connection.channel()
q, j, c = channel.queue_declare('celery', passive=True)
print 'celery %d jobs in queue' % j
'queue_delcare' в качестве побочного эффекта, даст вам длину очереди.
Надеюсь, это поможет вам.