Add timeout to script

nippet using the signal module to add a timeout to a script.

import signal
import time

TIMEOUT_MINUTES = 2


def handler(signum, frame):
    print()
    print("TIMEOUT!!")
    raise Exception("END OF TIME")
    
signal.signal(signal.SIGALRM, handler)
signal.alarm(60 * TIMEOUT_MINUTES)

print('sleep')
time.sleep(60 * (TIMEOUT_MINUTES + 1))

print('script ended without timeout')

Download a file

source

import requests

url = 'https://www.facebook.com/favicon.ico'
r = requests.get(url, allow_redirects=True)
open('facebook.ico', 'wb').write(r.content)