celery broker 连接参数简单说明

简单了解celery broker 连接参数的配置以及内部处理可以有助于更好的使用celery 以及开发自己的broker 支持

一个参考broker配置

  • redis
redis://:password@hostname:port/db_number
  • 自定义broker
app = Celery(
    __name__,
    broker_url="filesystem://",
    broker_transport_options={
        "data_folder_in": path,
        "data_folder_out": path,
    },
    imports=("tasks",),
)

参考配置

celery/app/base.py 内部对于connection的处理,实际使用的是kombu 的amqp 包装(一个amqp多底层支持适配)

def _connection(self, url, userid=None, password=None,
                virtual_host=None, port=None, ssl=None,
                connect_timeout=None, transport=None,
                transport_options=None, heartbeat=None,
                login_method=None, failover_strategy=None, **kwargs):
    conf = self.conf
    return self.amqp.Connection(
        url,
        userid or conf.broker_user,
        password or conf.broker_password,
        virtual_host or conf.broker_vhost,
        port or conf.broker_port,
        transport=transport or conf.broker_transport,
        ssl=self.either('broker_use_ssl', ssl),
        heartbeat=heartbeat,
        login_method=login_method or conf.broker_login_method,
        failover_strategy=(
            failover_strategy or conf.broker_failover_strategy
        ),
        # 参数可以通过broker_transport_options 参数以及其他自定义参数处理,实际调用的是kombu 的amqp 内部connection 处理
        transport_options=dict(
            conf.broker_transport_options, **transport_options or {}
        ),
        connect_timeout=self.either(
            'broker_connection_timeout', connect_timeout
        ),
    )

默认amqp 实现是celery.app.amqp:AMQP,里边包装了不少基于kombu 的amqp 操作,可以方便基于amqp 协议的任务处理,比如消息发送,任务路由,具体的详细包含的方法操作可以查看源码

说明

以上是一个简单说明,实际不少celery的功能通过阅读可以更好的理解是如何集成的,时间允许还是推荐阅读源码

参考资料

https://github.com/celery/celery/blob/5b86b35c81ea5a1fbfd439861f4fee6813148d16/celery/app/events.py

https://github.com/celery/celery/blob/706024358f0277f4fe716ae8a9a50a0f38eac64e/celery/app/amqp.py

https://github.com/celery/celery/blob/fa5d7ff09c93516c9d5712351f56db3d22876395/celery/app/base.py

https://github.com/celery/kombu/blob/5a88a28f31ab958072910d6f40f022296bea720c/kombu/connection.py

posted on 2025-03-08 08:00  荣锋亮  阅读(76)  评论(0)    收藏  举报

导航