小编UCP*_*mer的帖子

如何使用pika和Rabbitmq禁用心跳

我正在使用Rabbitmq来完成一些从我的Rabbit服务器到我的使用者的任务。我注意到,当我进行一些相当长时间的测试(20分钟以上)时,我的消费者将在完成任务后与生产者失去联系。在我的兔子日志中,我看到了错误

closing AMQP connection <0.14009.27> (192.168.101.2:64855 -> 
192.168.101.3:5672):
missed heartbeats from client, timeout: 60s
Run Code Online (Sandbox Code Playgroud)

另外,我从pika收到此错误

pika.exceptions.ConnectionClosed: (-1, "error(10054, 'An existing connection was forcibly closed by the remote host')")
Run Code Online (Sandbox Code Playgroud)

我假设这是由于此处的代码以及心跳与长时间阻塞连接时间的冲突所致。

 self.connection = pika.BlockingConnection(pika.ConnectionParameters('192.168.101.2', 5672, 'user', credentials))
    self.channel = self.connection.channel()
    self.channel.queue_declare(queue=self.tool,
                               arguments={'x-message-ttl': 1000,
                                             "x-dead-letter-exchange": "dlx",
                                             "x-dead-letter-routing-key": "dl",
                                             'durable': True})
Run Code Online (Sandbox Code Playgroud)

是否有适当的方法来增加心跳时间,或者我如何将其完全关闭(明智的做法)?就像我说的那样,超过20分钟的测试似乎会导致闭合连接错误,但是从1-15分钟的标记开始,我已经进行了大量测试,一切正常,消费者客户端继续等待消息传递。

python rabbitmq pika

1
推荐指数
1
解决办法
1600
查看次数

Array.push为array.push抛出TypeError不是函数

function capitalizeFirst(arr, new_arr) {
    if (arr.length === 0) return new_arr;
    let str = arr.pop();
    console.log(str);
    return capitalizeFirst(arr, new_arr.push(str));
}
Run Code Online (Sandbox Code Playgroud)

这是我的代码。目标是通过此练习练习递归。我给函数以下参数

capitalizeFirst(['car','taco','banana'], []);

new_arr显然是一个数组。为什么推方法不起作用?另外,当我将return语句更改为

return capitalizeFirst(arr, [].push(str));

并与chrome调试器一起使用,数字1一直传递到数组而不是arr.pop()值。是什么导致此行为?我也没有在实现中添加首字母大写。如果有人想知道为什么我的代码没有按照方法名称的说明进行操作,那将只是在push方法中进行replace()调用。

谢谢你的帮助

javascript arrays

1
推荐指数
1
解决办法
118
查看次数

list remove()麻烦

在我尝试从列表中删除不包含冒号的元素的情况下,Remove()对我来说无法正常工作.这是我的清单;

myList = ['hosts:127.0.0.1','-nU','-nT','-cA','-nB']
Run Code Online (Sandbox Code Playgroud)

separated = myList.split(','),然后

for i in separated:
    if ':' not in i:
    separated.remove(i)

print separated
Run Code Online (Sandbox Code Playgroud)

留给我['hosts:127.0.0.1', '-nT', '-nB']作为我的输出.我假设这是因为remove()只删除第一个匹配元素.这仍然无法解释为什么-nt和-nb会在那里.这样做有什么好办法?

谢谢

python list

0
推荐指数
1
解决办法
49
查看次数

函数的返回值为None,不能返回第一个键

我有一个看似简单的递归函数,循环遍历字典字典.我想打印我的值v,因为我已经在做了,我想返回与此键关联的第一个键:值对.在这种情况下,代码输出v = 'hi'None.我不确定为什么它一直没有返回.我将k变量设置为函数外部的空字符串.在这种情况下K应该是'six'.此外,我希望代码以某种方式返回,'five'因为它是第一个键,但我不确定这是否可行.有人可以帮忙吗?我提前为与钥匙混淆而道歉.这里,代码应该返回k ='six'.我不确定如何获得{'six': 'hi'}返回的密钥.

my_dict = {'one': {'two': 'hello'}, 'three': {'four': 'hey'}, 'five': {'six': 'hi'}}
k = ''
numero = 'six'

def find_location(d):
    for k, v in d.iteritems():
        if isinstance(v, dict):
            find_location(v)
        else:
            if numero == k:
                print 'this is k: {}'.format(k)
                print v
                return k


def print_return(func):
    print func


x = find_location(my_dict)
print_return(x)
Run Code Online (Sandbox Code Playgroud)

python recursion

0
推荐指数
1
解决办法
43
查看次数

标签 统计

python ×3

arrays ×1

javascript ×1

list ×1

pika ×1

rabbitmq ×1

recursion ×1