2017-07-24 36 views
6

Python的請求庫只支持超時連接閱讀 http://docs.python-requests.org/en/master/user/advanced/#timeouts如何強制Python的要求庫超時(包括DNS查找)

沒有辦法強迫超時當DNS查找需要很長時間。我想在超過X秒的時間完成GET請求(包括DNS,連接和讀取)時觸發超時。

請注意,我不能使用信號爲基礎的方法,因爲它只適用於主線程。

我正在尋找一個優雅的解決方案。

+0

你會需要在'urllib3'或'socket'中爲猴子打補丁。 –

回答

2

我不認爲有可能中斷除標準信號之外的標準庫函數C。

所以恕我直言,你只能多處理解決您的問題 - 例如使用timeout_decorator模塊優雅的辦法:

@timeout_decorator.timeout(5, use_signals=False) 
def timed_get(url): 
    return requests.get(url) 

但請記住,這會爲每個請求創建一個進程。