urllib3
(1.8.3以降、2014-06-23リリース)の新しいバージョンでは、設定ソケットオプションがサポートされています。
カスタムアダプタを作成することによって、(2.4.0以降、2014年8月29日リリース)requests
からこれらのオプションを設定できます。
class HTTPAdapterWithSocketOptions(requests.adapters.HTTPAdapter):
def __init__(self, *args, **kwargs):
self.socket_options = kwargs.pop("socket_options", None)
super(HTTPAdapterWithSocketOptions, self).__init__(*args, **kwargs)
def init_poolmanager(self, *args, **kwargs):
if self.socket_options is not None:
kwargs["socket_options"] = self.socket_options
super(HTTPAdapterWithSocketOptions, self).init_poolmanager(*args, **kwargs)
その後、カスタムソケットを必要とするセッションにこのアダプタを取り付けることができますオプション(例:SO_KEEPALIVE
を設定):
adapter = HTTPAdapterWithSocketOptions(socket_options=[(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)])
s = requests.session()
s.mount("http://", adapter)
s.mount("https://", adapter)
私は推測できますか? – Dacav