读取超时.(读取超时=无)通过Python中的simple_salesforce API插入记录时



我得到了一个"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设置它的方法,我洗耳恭听。

最新更新