python - 将 python 请求 session 存储在持久存储中

标签 python python-requests pickle

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

该站点需要 ntlm 授权。幸运的是,我可以依赖 HttpNtlmAuth,它运行良好。

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

但是如果应用程序被执行多次——每次我都需要询问用户名和密码。这很不舒服。存储凭据是不可取的。

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

有没有办法 pickle 和 unpickle session ?

最佳答案

如果您使用 dill 包,您应该能够 pickle pickle 本身失败的 session 。

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

在这里获取 dill:https://github.com/uqfoundation/dill

实际上,dill 还可以轻松地在重新启动时存储您的 python session ,因此您 可以像这样pickle你的整个python session :

>>> 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>

关于python - 将 python 请求 session 存储在持久存储中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27526353/

相关文章:

python-3.x - 请求 : Check that the proxy has been used to make the HTTP Request

python - 从请求中获取 JSON 参数,我得到 : 'method' object is not subscriptable

Python:类实例的 pickle.loads 失败

python - Spacy:保存解析后的模型

python - 在Python中查找偶数斐波那契数之和的代码的内存错误

python - 如何使用crawlspider跳转到下一页?

python - Django中抽象模型相关的ForeignKey字段

python - Pandas 没有安装在 virtualenv 中,尽管看起来是这样

python - Content-length header 和手动计算的时候不一样吗?

python - 使用 pickle.dump - TypeError : must be str, not bytes