python - 讨论一下requests库中session的线程安全问题?[update]
迷茫
迷茫 2017-04-18 10:17:14
[Python讨论组]

官方文档中找了很久,没有看到kenneth reitz对于session在多线程下是否线程安全的说明。GitHub上有一个类似的讨论。

问题

每个线程使用单独的requests.get(url)还是说建立一个全局的session,多个线程同时操作session.get(url)方法。我认为由于session中保存有相关的cookie等信息,每一次session.get(url)请求都会改变session中的cookie等信息,好像不行。

简单一点描述问题就是每个线程是否应该拥有独立的session

补充

在aiohttp中有这样一句话:

Don’t create a session per request. Most likely you need a session per application which performs all requests altogether. A session contains a connection pool inside, connection reusage and keep-alives (both are on by default) may speed up total performance.

不过aiohttp是基于协程即运行在单线程中的。

更新

假设有这样一种场景,队列中有多个不同的url,(由于url不同,所以session的线程安全问题可以暂时不考虑),请问多线程共享一个全局的session好么?(类比aiohttp的建议)
即线程池共享一个session还是每个线程单独开一个session好?因为大部分网页并不涉及到登录处理等cookie问题,session的线程安全不必过多的考虑。

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(2)
大家讲道理

Supported Features

  • Thread-safety ——from the Homepage of the requests

Requests: HTTP for Humans
Sounds like someone should write a tool that makes this really easy :P
Is the Session object from Python's Requests library thread safe?

好像不是thread-safe.

伊谢尔伦

https://github.com/kennethrei...

简单看了一眼源码,没看到任何锁之类的东西。操作的过程都挺复杂的,又没锁,在作者没做说明的情况下就先当作不安全的吧。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号