在 Flask Web App 中刷新 Salesforce 访问令牌

问题描述

Salesforce 访问令牌和使用这些访问令牌查询 Salesforce 都可以与 simple_salesforce python 客户端一起正常工作。问题是在 Web 应用程序中刷新这些令牌。我曾尝试使用如下全局变量来执行此操作,但这似乎不是线程安全的,并且难以为其编写单元测试。

sf = SalesforceConnector.connect()
@bp.route("",methods=["GET"])
def index():
    global sf
    try:
        payload = get_salesforce_records(sf)
    except Exception as e:
        print(e)
        sf = SalesforceConnector.connect()
        payload = get_salesforce_records(sf)
    return jsonify(payload),200

我试图用上面的代码实现的是在加载路由器文件时实例化 salesforce 对象。 SalesforceConnector 是我的类,它只是为 Salesforce 获取一个新令牌,然后使用该访问令牌获取一个 salesforce 对象。如果在 get_salesforce_records查询失败,我会重试并将新对象保存在全局变量中。

有没有更好的方法来实现索引功能,以便在访问令牌过期时并行请求流入时不会实例化多个新的salesforce对象?

更新:我已经将令牌刷新的逻辑移到一个类中,该类刷新令牌,然后在发现令牌过期时执行查询。但是由于多个并行请求而发生的并行刷新的核心问题还是一样!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)