将python请求会话存储在持久存储中

时间:2014-12-17 13:09:57

标签: python python-requests pickle

我正在使用python请求库。我的应用程序从站点执行简单的get请求并打印结果。

该网站需要使用ntlm进行授权。幸运的是,我可以依赖HttpNtlmAuth,它工作正常。

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

但如果应用程序执行多次 - 每次我都需要输入用户名和密码。这非常不舒服。存储凭据是不可取的。

我可以存储会话对象本身并重复使用几次吗?从服务器的角度来看 - 应该没问题。

有没有办法腌制和取消会话?

1 个答案:

答案 0 :(得分:6)

如果您使用dill软件包,则应该能够在pickle本身失败的情况下挑选会话。

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

在此处获取dillhttps://github.com/uqfoundation/dill

实际上,dill也可以让你很容易在重新启动时存储你的python会话,所以你 可以pickle你的整个python会话:

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

然后重启python,然后从你离开的地方继续。

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>