2014-12-17 14 views
5

Używam biblioteki żądań Pythona. Moja aplikacja wykonuje proste żądanie pobrania z witryny i drukuje wyniki.Przechowuj sesje żądań Pythona w pamięci trwałej

Witryna wymaga autoryzacji przy użyciu ntlm. Na szczęście mogę polegać na HttpNtlmAuth, która działa dobrze.

session = requests.Session() 
session.auth = HttpNtlmAuth(domain + "\\" + username, 
          password, 
          session) 

Ale jeśli aplikacja jest wykonywana kilka razy - za każdym razem muszę poprosić o nazwę użytkownika i hasło. To bardzo niewygodne. Przechowywanie danych uwierzytelniających jest niepożądane.

Czy mogę zapisać obiekt sesji i użyć go kilka razy? Z punktu widzenia serwera - powinno być dobrze.

Czy istnieje sposób na piklowanie i odszyfrowywanie sesji?

Odpowiedz

6

Jeśli korzystasz z pakietu dill, powinieneś być w stanie wybrać sesję, w której sam się nie powiedzie pickle.

>>> import dill as pickle 
>>> pickled = pickle.dumps(session) 
>>> restored = pickle.loads(pickled) 

Get dill tutaj: https://github.com/uqfoundation/dill

Właściwie dill także ułatwia przechowywanie sesji Pythona całej restartów, więc mógł pickle całą swoją pyton sesji tak:

>>> pickle.dump_session('session.pkl') 

Następnie uruchom ponownie Pythona i podnieś od miejsca, w którym skończyłeś.

Python 2.7.8 (default, Jul 13 2014, 02:29:54) 
[GCC 4.2.1 Compatible Apple Clang 4.1 ((tags/Apple/clang-421.11.66))] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import dill as pickle 
>>> pickle.load_session('session.pkl') 
>>> restored 
<requests.sessions.Session object at 0x10c012690>