user3925023
user3925023

Reputation: 687

Python os.system - set max time execution

I have a simple function which is aimed to parse IP and execute ipwhois on windows machine, printing output in serveral txt files:

 for ip in unique_ip:
        os.system('c:\whois64 -v ' + ip + ' > ' + 'C:\\ipwhois\\' + ip +'.txt' )

It happen that this os.system call get stuck, and entire process froze. Question: is it possible to set max time execution on os.system command?

EDIT

This works:

def timeout_test():
    command_line = 'whois64 -v xx.xx.xx.xx'
    args = shlex.split(command_line)
    print(args)
    try:
        with open('c:\test\iptest.txt', 'w') as fp:
            subprocess.run(args, stdout=fp, timeout=5)
    except subprocess.TimeoutExpired:
        print('process ran too long')
    return (True)
test = timeout_test()

Upvotes: 1

Views: 1516

Answers (1)

3NiGMa
3NiGMa

Reputation: 545

You can add a timeout argument to subprocess.call which works almost the same way as os.system. the timeout is measured in seconds since first attempted execution

Upvotes: 1

Related Questions