Celery client define custom Producer (auto_declare)

151 Views Asked by At

Having trouble turning off auto_declare in Kombu Producer (docs). As I understood correctly at Celery init you can pass kombu Producer in amqp=... (docs) but I was not very successful with it. Having function which is using default kombu Producer as seen in documentation.

def celery_app(
        service_name: str
) -> Celery:

    return Celery(
        __name__,
        result_backend=settings.CELERY_RESULT_URL,
        broker="%s/%s" % (settings.BASE_CELERY_BROKER_URL, service_name),
        task_create_missing_queues=False,
        celery_queue_ha_policy="all",
        task_acks_late=True,
        set_as_current=False,
        result_extended=True,
    )

I'd expect to just pass amqp=AMPQ(Producer(...)) like? :

    return Celery(
        __name__,
        result_backend=settings.CELERY_RESULT_URL,
        broker="%s/%s" % (settings.BASE_CELERY_BROKER_URL, service_name),
        task_create_missing_queues=False,
        celery_queue_ha_policy="all",
        task_acks_late=True,
        set_as_current=False,
        result_extended=True,
        amqp=AMQP(Producer(
            channel="%s/%s" % (settings.BASE_CELERY_BROKER_URL,
                               service_name), # (amqp://...)?
            exchange=...
            auto_declare=False
        ))

    )

but sadly that is not how it works. Can anyone help?

Thanks!

0

There are 0 best solutions below