Python Simple_Salesforce 关闭连接

3
我最近开始使用Simple_Salesforce包来进行Python编程,相关信息可以在https://pypi.python.org/pypi/simple-salesforce上找到。
我想知道一旦登录后连接会持续多长时间?是否有手动关闭(close())连接的方法?我已经查看了文档和源代码,但也许我错过了这个小细节。
为背景,我正在构建一个celery任务,每隔几分钟轮询salesforce,并且想知道我是否需要每次轮询都重新打开连接(即登录),或者全局登录足够长时间?
谢谢!
2个回答

2

从simple-salesforce库使用的SalesForce REST API:

访问令牌由Salesforce中的会话超时指定有限的生命周期。如果应用程序使用过期的访问令牌,则返回“会话已过期或无效”错误。如果应用程序使用Web服务器或用户代理OAuth身份验证流,则在授权期间可以提供刷新令牌,该刷新令牌可用于获取新的访问令牌。

所以,是的,您的会话有超时时间,并且从文档中可以在SalesForce上设置它:

在Salesforce中,可以通过单击“安全性控制|会话设置”来配置访问令牌的会话超时时间。

因此,一旦您的会话超时,您必须请求新的会话ID。如果您想手动关闭连接,可以通过设置其年龄来销毁会话:session.setMaxAge(-1)。

链接到完整文档

希望这可以帮助,祝好!


谢谢您的回复,非常有帮助。我明白session.setMaxAge(-1)的工作原理了。不过,通过simple_salesforce有没有其他方法可以实现这个功能呢?我查看了源代码,但是找不到任何可能设置session和setMaxAge函数的对象。 - undefined
我没有看到简单的Salesforce库的代码,但如果你看过并且没有找到任何东西,我猜你最好使用request库编写自己的代码,并实现你想要的功能。Request非常好用,还支持OAuth 2.0! - undefined

1
我能够通过将instance_idsession_id传递回Salesforce类的try/except块来重新建立我的simple-salesforce连接。
from simple-salesforce import Salesforce
from requests.exceptions import ConnectionError

# Original authentication
sf = Salesforce(username='YOUR_USERNAME', 
                password='YOUR_PASSWORD', 
                security_token='YOUR_SECURITY_TOKEN')

# Some amount of time passes causing Salesforce to close the connection...

try:
    # Attempt your request here...
    record = sf.Account.get('ACCOUNT_ID')
except ConnectionError:
    # This line will re-establish the connection
    sf = Salesforce(instance=sf.sf_instance, session_id=sf.session_id)
    # Attempt your request again here...
    record = sf.Account.get('ACCOUNT_ID')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接