• python使用pika链接rabbitmq Connection reset by peer 解决办法


    记录一下,

    最近在用机器学习打算做一个Rest API, 数据存入mongo,任务采用消息队列,rabbitmq

    由于引擎采用python编写,所以WEB也直接打算用python编写了,比较省事。

    WEB采用flask,连接rabbitmq使用pika,但是在链接过程中,无论是消费还是生产,只要过了一段时间就会主动断链,

    提示:

    Connection reset by peer

    其实原因很简单,服务端没有收到客户端的心跳包,默认是10秒,但是预计的已经超过10秒还没有发心跳包,所以服务端主动断连了。

    解决的办法:

    py2的代码:

        def __init__(self,  # pylint: disable=R0913,R0914,R0912
                     host=_DEFAULT,
                     port=_DEFAULT,
                     virtual_host=_DEFAULT,
                     credentials=_DEFAULT,
                     channel_max=_DEFAULT,
                     frame_max=_DEFAULT,
                     heartbeat=_DEFAULT,
                     ssl=_DEFAULT,
                     ssl_options=_DEFAULT,
                     connection_attempts=_DEFAULT,
                     retry_delay=_DEFAULT,
                     socket_timeout=_DEFAULT,
                     locale=_DEFAULT,
                     backpressure_detection=_DEFAULT,
                     blocked_connection_timeout=_DEFAULT,
                     client_properties=_DEFAULT,
                     tcp_options=_DEFAULT,
                     **kwargs):
            """Create a new ConnectionParameters instance. See `Parameters` for
            default values.
    
            :param str host: Hostname or IP Address to connect to
            :param int port: TCP port to connect to
            :param str virtual_host: RabbitMQ virtual host to use
            :param pika.credentials.Credentials credentials: auth credentials
            :param int channel_max: Maximum number of channels to allow
            :param int frame_max: The maximum byte size for an AMQP frame
            :param int heartbeat: Heartbeat timeout. Max between this value
                and server's proposal will be used as the heartbeat timeout. Use 0
                to deactivate heartbeats and None to accept server's proposal.
            :param bool ssl: Enable SSL
            :param dict ssl_options: None or a dict of arguments to be passed to
                ssl.wrap_socket
            :param int connection_attempts: Maximum number of retry attempts
            :param int|float retry_delay: Time to wait in seconds, before the next
            :param int|float socket_timeout: Use for high latency networks
            :param str locale: Set the locale value
            :param bool backpressure_detection: DEPRECATED in favor of
                `Connection.Blocked` and `Connection.Unblocked`. See
                `Connection.add_on_connection_blocked_callback`.
            :param blocked_connection_timeout: If not None,
                the value is a non-negative timeout, in seconds, for the
                connection to remain blocked (triggered by Connection.Blocked from
                broker); if the timeout expires before connection becomes unblocked,
                the connection will be torn down, triggering the adapter-specific
                mechanism for informing client app about the closed connection (
                e.g., on_close_callback or ConnectionClosed exception) with
                `reason_code` of `InternalCloseReasons.BLOCKED_CONNECTION_TIMEOUT`.
            :type blocked_connection_timeout: None, int, float
            :param client_properties: None or dict of client properties used to
                override the fields in the default client properties reported to
                RabbitMQ via `Connection.StartOk` method.
            :param heartbeat_interval: DEPRECATED; use `heartbeat` instead, and
                don't pass both
            :param tcp_options: None or a dict of TCP options to set for socket
            """

    在py3:ConnectionParameters设置heartbeat_interval=0即可。

    在py2:ConnectionParameters设置heartbeat=0即可。

  • 相关阅读:
    [LeetCode] 75. 颜色分类(荷兰国旗)
    [LeetCode] 347. 前K个高频元素
    CMU-14445 数据库原理 汇总
    MIT-6.824 操作系统 汇总
    发布一个基于协程和事件循环的c++网络库
    记录一次gdb debug经历
    彻底弄懂UTF-8、Unicode、宽字符、locale
    CPU使用率原理及计算方式
    TCP使用注意事项总结
    STL-vector
  • 原文地址:https://www.cnblogs.com/sevck/p/9173279.html
Copyright © 2020-2023  润新知