requests.apiモジュール - Python
https://github.com/requests/requests/blob/00fd4c8eb4ac0fd7b8f8d76bbf15ab06351c052c/requests/api.py#L16-L58 から重要なところを引っ張ってきた
def request(method, url, **kwargs): with sessions.Session() as session: return session.request(method=method, url=url, **kwargs)
リクエストを送る前に毎回Sessionを生成しているということ。また、with
を使ってるからそのセッションは閉じられている。セッションは必ず閉じないといけない。
使用例
セッションを使うときはrequests.Session
を使い、セッションを使わないときはrequests.api
を使うみたいな?
import requests class Requester(object): _session = None def __init__(self, requests_session=True): if requests_session: self._session = requests.Session() else: from requests import api self._session = api def internal_call(self): r = self._session.request('GET', 'http://google.com') print(r.status_code) if __name__ == '__main__': requester = Requester(False) requester.internal_call() requester = Requester() requester.internal_call()
実行結果
200 200