2015-10-07 11 views
6

Czasami widzę ludzi powołać Web API z wykorzystaniem obiektu requests.Session:Różnica między użyciem requests.get() i requests.session(). Get()?

client = requests.session() 
resp = client.get(url='...') 

Ale czasami nie:

resp = requests.get(url='...') 

Może ktoś wyjaśnić kiedy powinniśmy używać Session a kiedy nie potrzebuję ich?

+1

Twój * pierwszy przystanek * powinien być [dokumentacją biblioteki] (http://docs.python-requests.org/en/latest/user/advanced/#session-objects). –

Odpowiedz

9

Pod maską requests.get() tworzy nowy obiekt Session dla każdego wykonanego żądania.

Tworząc obiekt sesji z góry, ponownie uzyskuje się ponowne użycie sesji; to pozwala na przykład na zachowanie plików cookie i pozwala na ponowne użycie ustawień, które mają być używane dla wszystkich połączeń, takich jak nagłówki i parametry zapytania. Do tego wszystkiego, sesje pozwalają wykorzystać pulę połączeń; ponowne wykorzystanie połączeń z tym samym hostem.

Zobacz Sessions documentation:

Obiekt Session pozwala utrzymywać pewne parametry całej żądań. Utrzymuje również pliki cookie we wszystkich żądaniach wysłanych z instancji Session i będzie używać puli połączeń Urllib3. Jeśli więc wysyłasz kilka żądań do tego samego hosta, podstawowe połączenie TCP zostanie ponownie użyte, co może spowodować znaczny wzrost wydajności (patrz HTTP persistent connection).

+0

Więc jeśli moje żądanie HTTP jest jednorazowym zadaniem, nie będzie różnicy między tymi dwoma podejściami, prawda? –

+1

@FredPym: dokładnie. Jak tylko nawiążesz wiele połączeń z tym samym hostem, ponowne użycie sesji jest dobrym pomysłem. –

0

Cytując przedmiotem documentation

Sesja pozwala utrzymywać pewne parametry całej żądań. Utrzymuje również pliki cookie we wszystkich żądaniach wysłanych z instancji Session.