python - 如果只执行 get 请求(并且忽略 cookie),Python 的 Requests 库线程是否安全?
问题描述
关于对象 Python requests 模块的线程安全似乎有很多相互矛盾的信息Session
,一些用户说它在某些情况下是线程安全的,而另一些用户则说它根本不应该被认为是线程安全的,而且很多的用户似乎建议使用 aiohttp,因为它是围绕异步编程设计的。
很明显,如果用户是每个线程的 requests.get() 调用,那么 requests 确实是线程安全的,因为 requests.get() 每次调用时都会在后台创建一个新会话,但是,我不清楚什么是创建全局Session
对象并向各个线程中的会话发出GET请求时的线程安全性,如果用户实际上并不关心共享Session
对象提供的功能(如记住 cookie 信息)并且只是希望重用与 API 端点的相同连接以提高速度。
Session
此外,在线程的中途重新定义全局对象是否是线程安全的?
下面是该逻辑的伪代码示例:
GLOBAL_SESSION = requests.Session()
def make_api_call(x):
while True
for i in api_calls:
GLOBAL_SESSION.get(i)
if some_condition_occurs:
GLOBAL_SESSION = requests.Session()
GLOBAL_SESSION.get(i)
for in range(y):
t = Thread(target=make_api_calls, args=(x, )).start()
解决方案
推荐阅读
- c# - 统一错误。通过按钮单击方法将实例添加到静态列表时的 NullReferenceExeption
- python - 逐行求和并在 Pandas 数据透视表中创建新列
- c - makefile 尝试自行编译
- javascript - JS 正则表达式查看特定模式之外的内容
- angular - 需要帮助让 Promise.all 在 Angular 中工作
- javascript - 可控 div 不应该从另一个 div 越过某条线
- rust - 如何创建类似函数的过程宏?
- reactjs - React Admin:选择现有图像或上传新图像
- python - 如何减少nose2的测试执行时间
- json - c# 从模型创建嵌套 JSON