前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Python调用系统命令设置超时时间

Python调用系统命令设置超时时间

作者头像
py3study
发布于 2020-01-09 06:35:09
发布于 2020-01-09 06:35:09
3K00
代码可运行
举报
文章被收录于专栏:python3python3
运行总次数:0
代码可运行

    python通过subprocess模块调用系统命令。实际使用中,有一次是命令进入了交互模式,结果web端直接卡死了。调用时设置一个超时时间,时间用完后自动断开。这样就避免了系统因为调用命令而僵死的问题。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def sys_command_outstatuserr(cmd, timeout=120):
    p = Popen(cmd, stdout=PIPE, stderr=PIPE, shell=True)
    t_beginning = time.time()
    seconds_passed = 0
    while True:
        if p.poll() is not None:
            res = p.communicate()
            exitcode = p.poll() if p.poll() else 0
            return res[0], exitcode, res[1]
        seconds_passed = time.time() - t_beginning
        if timeout and seconds_passed > timeout:
            p.terminate()
            out, exitcode, err = '', 128, '执行系统命令超时'
            return out, exitcode, err
        time.sleep(0.1)

def sys_command_outstatuserr(cmd, timeout=120):

    p = Popen(cmd, stdout=PIPE, stderr=PIPE, shell=True)

    t_beginning = time.time()

    seconds_passed = 0

    while True:

        if p.poll() is not None:

            res = p.communicate()

            exitcode = p.poll() if p.poll() else 0

            return res[0], exitcode, res[1]

        seconds_passed = time.time() - t_beginning

        if timeout and seconds_passed > timeout:

            p.terminate()

            out, exitcode, err = '', 128, '执行系统命令超时'

            return out, exitcode, err

        time.sleep(0.1)

def sys_command_outstatuserr(cmd, timeout=120):

    p = Popen(cmd, stdout=PIPE, stderr=PIPE, shell=True)

    t_beginning = time.time()

    seconds_passed = 0

    while True:

        if p.poll() is not None:

            res = p.communicate()

            exitcode = p.poll() if p.poll() else 0

            return res[0], exitcode, res[1]

        seconds_passed = time.time() - t_beginning

        if timeout and seconds_passed > timeout:

            p.terminate()

            out, exitcode, err = '', 128, '执行系统命令超时'

            return out, exitcode, err

        time.sleep(0.1)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/08/26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
python 设置方法超时
#!/usr/bin/python #-*-coding:utf-8-*- import os,time,signal,platform,subprocess class TimeoutError(Exception): pass def run_command(cmd, timeout=60): is_linux = platform.system() == 'Linux' p = subprocess.Popen(cmd, stderr=subprocess.STD
py3study
2020/01/10
2.4K0
python 协程池和pool.map用法
上面直接将所有任务加到列表中,然后一次性,全部异步执行。那么同一时刻,最多有多少任务执行呢?
py3study
2020/02/25
3.6K0
subprocess.popen.kill杀死所有子进程
subprocess.Popen(['google-chrome',"http://www.baidu.com"])可打开chrome并显示百度网页。
py3study
2020/02/25
5.5K0
python执行系统命令
在实际开发中,除了编写python自身的代码外,还经常需要执行操作系统的命令。在python3中,推荐使用subprocess模块来执行系统命令,基本用法如下
生信修炼手册
2020/05/14
1.7K0
Python 执行系统命令
Python 编程过程中经常会用到系统命令,本文记录实现方法。 系统命令 作为胶水语言,Python可以很方便的执行系统命令,Python3中常用的执行操作系统命令有以下方式 os.system() os.popen() subprocess 模块 os.system 执行命令但无法获取取命令输出时,可以使用 os.system os.system() 是C语言 system() 函数的封装,返回命令的退出状态码,命令执行结果输出到标准输出(stdout/窗口)。 system函数可以将
为为为什么
2022/08/10
1.7K0
Python调用linux系统命令--使
在python 中调用系统命令,如果使用subprocess.Popen() 模块,按照命令参数的的形式,可以分两种:
py3study
2020/01/07
5.1K0
Python调用外部系统命令
利用Python调用外部系统命令的方法可以提高编码效率。调用外部系统命令完成后可以通过获取命令执行返回结果码、命令执行的输出结果进行进一步的处理。本文主要描述Python常见的调用外部系统命令的方法,包括os.system()、os.popen()、subprocess.Popen()等。
Python学习者
2023/07/04
2780
Python2.x设置命令执行的超时时间
在Python2.x中的几个用来执行命令行的库或函数在执行命令是均不能设置一个命令执行的超时时间,用来在命令执行时间超时时终端这个命令的执行,这个功能在3.x(?)中解决了,但是在2.x还是只能自己实现。 下面就简单实现了一个版本: import subprocess from threading import Timer def call(args, timeout): p = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subp
kongxx
2018/05/14
1.9K0
正确的使用python调用shell的姿势
python是一门简洁灵活的语言,也是一门胶水语言,能与很多其他的编程语言进行交互,虽然性能差一点,但易用,入门和上手都比较简单,所以一直以来都被使用广泛。
我是攻城师
2020/04/22
7.6K0
python获取命令行输出结果
python获取命令行输出结果,并对结果进行过滤找到自己需要的! 这里以获取本机MAC地址和IP地址为例! # coding: GB2312 import os, re # execute command, and return the output def execCmd(cmd): r = os.popen(cmd) text = r.read() r.close() return text # write "data" to file
py3study
2020/01/10
4.5K0
Python调用系统命令的六种方法
作为胶水语言,Python可以很方便的执行系统命令,Python3中常用的执行操作系统命令有os.system()、os.popen()、subprocess.popen()、subprocess.call()、subprocess.run()、subprocess.getstatusoutput()六种方法。
吾非同
2020/12/07
4.1K0
Python调用系统命令的六种方法
python笔记65 - Python3 subprocess执行命令行获取返回结果
subprocess 模块允许我们启动一个新进程,并连接到它们的输入/输出/错误管道,从而获取返回值。 Popen 是 subprocess的核心,子进程的创建和管理都靠它处理。
上海-悠悠
2021/10/08
9.3K0
python调用shell命令小结
 在写python脚本的时候,经常需要调用系统命令,常用的python调用系统命令的方法主要有subprocess.call和os.popen。默认情况下subprocess.call的方法结果是返回值,即1或0,而os.popen则是命令运行的结果,可以用readlines(读取所有行,返回数组)或者read(读读取所有行,返回str)来读取。
py3study
2020/01/06
1.3K0
python之系统命令
以上执行shell命令的相关的模块和函数的功能均在 subprocess 模块中实现,并提供了更丰富的功能。
菲宇
2019/06/13
1.1K0
python之调用系统命令 原
os模块包装了不同操作系统的通用接口,使用户在不同操作系统下,可以使用相同的函数接口,返回相同结构的结果。
晓歌
2018/08/15
2.3K0
python之调用系统命令
                                                                            原
Python用subprocess的Popen来调用系统命令
当我们须要调用系统的命令的时候,最先考虑的os模块。用os.system()和os.popen()来进行操作。可是这两个命令过于简单,不能完毕一些复杂的操作,如给执行的命令提供输入或者读取命令的输出,推断该命令的执行状态,管理多个命令的并行等等。这时subprocess中的Popen命令就能有效的完毕我们须要的操作。在这里对Popen予以简介。
全栈程序员站长
2022/07/05
1.9K0
python的subprocess模块
1 os与commands模块 ​ 2 subprocess模块 ​ 3 subprocess.Popen类
py3study
2020/01/07
3.1K0
python模块之subprocess模块级方法
参数:(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs)。除input, capture_output, timeout, check,其他参数与Popen构造器参数一致。
枇杷李子橙橘柚
2019/05/26
2.4K0
Python3 与 C# 并发编程之~ 进程篇中
接着上面继续拓展,补充说说获取函数返回值。 上面是通过成功后的回调函数来获取返回值,这次说说自带的方法:
逸鹏
2018/08/14
7760
Python3 与 C# 并发编程之~ 进程篇中
Python 运用zabbix开发简易巡检工具
利用SSH或者Zabbix监控,配合Django开发框架,改造出属于自己的监控平台,实现包括主机图形,自动发现,计划任务,批量cmd执行,服务监控,日志监控等功能,由于公司机器混乱,基本上市面上的所有设备都能找到,监控这些不同型号不同系统的主机需要分别对待,我们就借助各种开源项目来做一个简单的巡检工具,方便工作需要。
微软技术分享
2022/12/28
1.6K0
Python 运用zabbix开发简易巡检工具
相关推荐
python 设置方法超时
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文