您是否尝试过请求?
您可以方便地设置超时http://docs.python-requests.org/en/latest/user/quickstart/#timeouts
>>> requests.get('http://github.com', timeout=0.001)
编辑:我错过了问题的第 2 部分。为此,您可以使用:
import sys
import signal
import requests
class TimeoutException(Exception):
pass
def get_timeout(url, dns_timeout=10, load_timeout=60):
def timeout_handler(signum, frame):
raise TimeoutException()
signal.signal(signal.SIGALRM, timeout_handler)
signal.alarm(load_timeout) # triger alarm in seconds
try:
response = requests.get(url, timeout=dns_timeout)
except TimeoutException:
return "you're taking too long"
return response
并在您的代码中使用该get_timeout
功能。
如果您需要超时可用于其他功能,您可以创建一个装饰器。以上代码来自http://pguides.net/python-tutorial/python-timeout-a-function/。