Python中文
首页
教程
问答
标签
搜索
登录
注册
带有Paramiko的ssh上的tail f具有越来越大的延迟
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我试图在运行的嵌入式系统的日志文件中检查错误。在</p> <p>我已经在我的脚本中实现了paramiko,因为有人告诉我这是在python中使用ssh的最佳方式。在</p> <p>现在当我跟踪日志文件时,我发现有一个很大的延迟累积。每分钟增加30秒。在</p> <p>我已经使用grep来减少打印的行数,因为我认为我接收的输入太多了,但事实并非如此。在</p> <p>如何在运行时减少此延迟或阻止延迟增加。我想跟踪几个小时。。。在</p> <pre><code>def mkssh_conn(addr): """returns an sshconnection""" paramiko.util.logging.getLogger('paramiko').setLevel(logging.WARN) sshcon = paramiko.SSHClient() sshcon.set_missing_host_key_policy(paramiko.AutoAddPolicy()) sshcon.connect(addr , username, password) return sshcon while True: BUF_SIZE = 1024 client = mkssh_conn() #returns a paramiko.SSHClient() transport = client.get_transport() transport.set_keepalive(1) channel = transport.open_session() channel.settimeout(delta) channel.exec_command( 'killall tail') channel = transport.open_session() channel.settimeout(delta) cmd = "tail -f /log/log.log | grep -E 'error|statistics'" channel.exec_command(cmd) while transport.is_active(): print "transport is active" rl, wl, xl = select.select([channel], [], [], 0.0) if len(rl) > 0: buf = channel.recv(BUF_SIZE) if len(buf) > 0: lines_to_process = LeftOver + buf EOL = lines_to_process.rfind("\n") if EOL != len(lines_to_process)-1: LeftOver = lines_to_process[EOL+1:] lines_to_process = lines_to_process[:EOL] else: LeftOver = "" for line in lines_to_process.splitlines(): if "error" in line: report_error(line) print line client.close() </code></pre>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>我找到了一个解决方案: 似乎如果我把BUF_的大小降低到256,延迟就会减少。显然。 我需要重新检查在运行时延迟是否仍然增加。在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
合并Pandas字典DataFram
6 回答
合并pandas数据帧,使用列操作
1 回答
合并pandas数据帧,其中一个值位于另两个值之间
3 回答
合并pandas数据帧:在中创建的空列
8 回答
合并pandas数据帧:如何找出导致
4 回答
合并Pandas数据帧:选择较小的绝对值
8 回答
合并Pandas数据帧(左连接样式)会产生奇怪的结果
3 回答
合并Pandas数据帧中两列的值,应用函数进行重复数据消除和合并
2 回答
合并pandas数据帧中的2列,用前面的值填充nan
7 回答
合并Pandas数据帧会复制一些数据
10 回答
合并pandas数据帧列表
6 回答
合并pandas数据帧占用了太多内存
1 回答
合并pandas数据帧时如何保留列多索引值
1 回答
合并Pandas数据帧的所有列
3 回答
合并pandas数据帧而不更改原始列名
1 回答
合并Pandas数据框,如果字符串df2.domain出现在df.u中
10 回答
合并pandas数据框,无需按特定顺序排列
9 回答
合并pandas数据框中可变数量的行
4 回答
合并Pandas数据框作为分组后的结果
6 回答
合并Pandas时匹配子字符串
7 回答