プール内に各https接続を作成した後に追加手順が実行されるhttpsエンドポイントへの接続プールを作成したいとします。ステップは、そのようhttps callを作ることです。追加の認証手順を追加するためにurllib3接続の作成を拡張するにはどうすればよいですか?
POST /_session HTTP/1.1
Content-Length: 32
Content-Type: application/x-www-form-urlencoded
Accept: */*
name=YourUserName&password=YourPassword
成功した場合は、応答クッキーは例えば、返されます。この余分なステップは行くだろう
200 OK
Cache-Control: must-revalidate
Content-Length: 42
Content-Type: text/plain; charset=UTF-8
Date: Mon, 04 Mar 2013 14:06:11 GMT
server: CouchDB/1.0.2 (Erlang OTP/R14B)
Set-Cookie: AuthSession="a2ltc3RlYmVsOjUxMzRBQTUzOtiY2_IDUIdsTJEVNEjObAbyhrgz"; Expires=Tue, 05 Mar 2013 14:06:11 GMT; Max-Age=86400; Path=/; HttpOnly; Version=1
x-couch-request-id: a638431d
?たとえば、_new_connメソッドを拡張する必要がありますか?
class CustomHTTPSConnectionPool(HTTPSConnectionPool):
def _new_conn(self):
conn = super(CustomHTTPSConnectionPool, self)._new_conn()
... call '/_session' and save cookie
return conn
もう1つの考慮点は、クッキーが期限切れになり、期限切れになる前に更新することです。私はちょうどそれをここに注目しています、それはおそらく別の質問の対象にすべきです。 (コメントで述べたように)
独自のCustomHTTPSConnectionPoolを作成しようとしている場合は、正しい軌道に乗っています。しかし、あなたがリンクしているドキュメントを読んで、私はあなたがこれを必要とは思わない?状態は接続ではなくクッキーに保持されているようですので、ハンドシェイクを行い、クッキーを取得し、各リクエストでクッキーを渡して接続に関係なく行ってもいいと思うだけです。 – shazow
ああ、そうです。それはたくさんの意味があります - ありがとう!これを回答に変換したい場合は、+1することができます。 –