我得到了一个"ReadTimeout:HTTPSConnectionPool(主机=',端口=443(:读取超时。(读取超时=无(";同时使用python的simple_salesforce库的批量api插入记录。我没有设置任何超时限制,我正在尝试插入大约3M的记录。我也试着插入小块,但它也有同样的问题。如果你们中有人遇到过这样的问题,请告诉我。
我的代码:
from simple_salesforce import Salesforce, SalesforceLogin
sf = Salesforce(username= ''
,password= ''
,security_token= '')
bulk_data = []
for row in <data_to_be_inserted>.itertuples():
d = row._asdict()
del d['Index']
bulk_data.append(d)
sf.bulk.<Custom_Object_Name>.insert(bulk_data)
是的,请尝试增加请求会话的超时时间。
simple_salesforce包在后台使用请求。遗憾的是,simple_salesforce似乎没有公开timeout
参数。
值得庆幸的是,它确实允许您自定义会话并将其传递给Salesforce()
构造函数。
以下是我在网上找到的两种破解会话的方法:
- 定义自定义HTTP适配器
- 这个似乎更容易:使用
functools.partial
还有第三个和第四个:
- Salesforce对象有一个";宁静的";方法,该方法可以进行任意的API调用。换句话说,您可以使用例如Bulk API 2.0来滚动自己的
- 然而,一旦您走到这一步,也许您想直接使用请求库进行API调用?这是一个很好的库,您不会遇到simple_salesforce的限制
我很乐意对timeout
说错。如果有人知道从simple_salesforce设置它的方法,我洗耳恭听。