wget
Pythonからこのようなタスクを実行するためにバイナリを呼び出すべきではありません。代わりに、Pythonで利用可能なHTTPライブラリの1つを使用すると、エラー処理と制御が大幅に向上します。
標準ライブラリの一部である(urllib2
公式ドキュメント、Missing Manual )があります。
requests
ただし、代わりに優れたモジュールを使用することを強くお勧めします。非常にクリーンなAPIを備えており、単純なタスクを必要に応じて単純にしますが、それでも多くの柔軟性ときめ細かい制御を提供します。
モジュールを使用すると、次のようにキーワード引数を使用してタイムアウト(秒単位)を指定requests
できます。timeout
response = requests.get(url, timeout=0.02)
タイムアウトを超えると、Timeout
例外が発生します。例外をキャッチして、好きなように処理する必要があります。
import requests
from requests.exceptions import Timeout, ConnectionError
TIMEOUT = 0.02
urls = ['http://www.stackoverflow.com',
'http://www.google.com']
for url in urls:
try:
response = requests.get(url, timeout=TIMEOUT)
print "Got response %s" % response.status_code
response_body = response.content
except (ConnectionError, Timeout), e:
print "Request for %s failed: %s" % (url, e)
# Handle however you need to ...
サンプル出力:
http://www.stackoverflow.comのリクエストに失敗しました:リクエストがタイムアウトしました。
http://www.google.comのリクエストに失敗しました:リクエストがタイムアウトしました。