rabbitmq链接超时_python – RabbitMQ在处理长时间运行的任务时关闭连接,超时设置产生错误...
我正在使用RabbitMQ生产者向消费者发送长时间运行的任务(30分钟).问题是,当关闭服务器的连接并且未确认的任务被重新排队时,消费者仍在处理任务.从研究中我了解到heartbeat或increased connection timeout都可以用来解决这个问题.这两种解决方案在尝试时都会出错.在阅读类似帖子的答案时,我还了解到,自发布答案以来已经对RabbitMQ实施了许多更改(例如,默认心跳
我正在使用RabbitMQ生产者向消费者发送长时间运行的任务(30分钟).问题是,当关闭服务器的连接并且未确认的任务被重新排队时,消费者仍在处理任务.
从研究中我了解到heartbeat或increased connection timeout都可以用来解决这个问题.这两种解决方案在尝试时都会出错.在阅读类似帖子的答案时,我还了解到,自发布答案以来已经对RabbitMQ实施了许多更改(例如,默认心跳超时已从RabbitMQ 3.5.5之前的580更改为60).
指定心跳和阻止的连接超时时:
credentials = pika.PlainCredentials('user', 'password')
parameters = pika.ConnectionParameters('XXX.XXX.XXX.XXX', port, '/', credentials, blocked_connection_timeout=2000)
connection = pika.BlockingConnection(parameters)
channel = connection.channel()
显示以下错误:
TypeError: __init__() got an unexpected keyword argument 'blocked_connection_timeout'
在连接参数中指定heartbeat_interval = 1000时,会显示类似的错误:TypeError:__ init __()得到意外的关键字参数’heartbeat_interval’
类似地,对于socket_timeout = 1000,会显示以下错误:TypeError:__ init __()得到一个意外的关键字参数’socket_timeout’
我在Ubuntu 14.04上运行RabbitMQ 3.6.1,pika 0.10.0和python 2.7.
>为什么上述方法会产生错误?
>在持续长时间运行的任务中,是否可以使用心跳方法?例如,在执行需要30分钟的大型数据库连接时,是否可以使用心跳?我赞成心跳方法,很多时候很难判断数据库连接等任务需要多长时间.
我已经阅读了类似问题的答案
更多推荐
所有评论(0)