• pika详解(三)SelectConnection及其他Connection


    pika详解(三)SelectConnection及其他Connection

    pika除了block connection外还提供了其他非阻塞式的连接方式

    SelectConnection

    定义如下:

    class SelectConnection(BaseConnection):
        def __init__(
                self,  # pylint: disable=R0913
                parameters=None,
                on_open_callback=None,
                on_open_error_callback=None,
                on_close_callback=None,
                custom_ioloop=None,
                internal_connection_workflow=True):
            """Create a new instance of the Connection object.
    
            :param pika.connection.Parameters parameters: Connection parameters
            :param callable on_open_callback: Method to call on connection open
            :param None | method on_open_error_callback: Called if the connection
                can't be established or connection establishment is interrupted by
                `Connection.close()`: on_open_error_callback(Connection, exception).
            :param None | method on_close_callback: Called when a previously fully
                open connection is closed:
                `on_close_callback(Connection, exception)`, where `exception` is
                either an instance of `exceptions.ConnectionClosed` if closed by
                user or broker or exception of another type that describes the cause
                of connection failure.
            :param None | IOLoop | nbio_interface.AbstractIOServices custom_ioloop:
                Provide a custom I/O Loop object.
            :param bool internal_connection_workflow: True for autonomous connection
                establishment which is default; False for externally-managed
                connection workflow via the `create_connection()` factory.
            :raises: RuntimeError
    
            """
            if isinstance(custom_ioloop, nbio_interface.AbstractIOServices):
                nbio = custom_ioloop
            else:
                nbio = SelectorIOServicesAdapter(custom_ioloop or IOLoop())
    
            super(SelectConnection, self).__init__(
                parameters,
                on_open_callback,
                on_open_error_callback,
                on_close_callback,
                nbio,
                internal_connection_workflow=internal_connection_workflow)
    
        @classmethod
        def create_connection(cls,
                              connection_configs,
                              on_done,
                              custom_ioloop=None,
                              workflow=None):
            """Implement
            :py:classmethod:`pika.adapters.BaseConnection.create_connection()`.
    
            """
            nbio = SelectorIOServicesAdapter(custom_ioloop or IOLoop())
    
            def connection_factory(params):
                """Connection factory."""
                if params is None:
                    raise ValueError('Expected pika.connection.Parameters '
                                     'instance, but got None in params arg.')
                return cls(
                    parameters=params,
                    custom_ioloop=nbio,
                    internal_connection_workflow=False)
    
            return cls._start_connection_workflow(
                connection_configs=connection_configs,
                connection_factory=connection_factory,
                nbio=nbio,
                workflow=workflow,
                on_done=on_done)
     

    SelectConnection继承BaseConnection,只是重写了create_connection

    在create_connection 中可以看到:

    nbio = SelectorIOServicesAdapter(custom_ioloop or IOLoop())

    说明这个类实现的 select IO

    提供的函数、方法解析:

    1. add_on_close_callback

    关闭时候的回调, callback定义 callback(pika.connection.Connection,exception)

    1. add_on_connection_blocked_callback

    阻塞时候回调 回调定义: callback(connection, pika.frame.Method)

    1. add_on_connection_unblocked_callback

      解除阻塞时候回调

    2. add_on_open_callback

      打开时回调

    3. add_on_open_error_callback

    打开异常时候回调

    1. basic_nack
    2. channel(channel_number = None*,*on_open_callback = None

    建立通道

    channel_number(int) - 要使用的通道编号,默认为下一个可用通道编号。
    on_open_callback(callable)

    1. close
    2. consumer_cancel_notify

    定服务器是否支持活动连接上的使用者取消通知 返回bool值

    1. create_connection(connection_configs, on_done, custom_ioloop=None, workflow=None)

    建立连接

    1. exchange_exchange_bindings

      返回值bool 是否支持交换机修改

    2. ioloop

    3. is_closed

    4. is_closing

    5. is_open

    6. publisher_confirms

      是否支持发布确认

    Tornado Connection Adapter

    方法可参考基类BaseConnection

    Twisted Connection Adapter

    方法可参考基类BaseConnection

     
  • 相关阅读:
    二分图的判定 (图)
    并查集(模板)
    数独 (dfs)
    Map <STL>
    Set <STL>
    二叉搜索树的实现
    Find a way (BFS)
    根据输入的变量,执行相应的计算公式并返回结果
    检测字符串当中x与o的数目是否相等
    根据给定的数字和字符串,生成循环指定次数的字符串
  • 原文地址:https://www.cnblogs.com/xiao-xue-di/p/13856708.html
Copyright © 2020-2023  润新知