0

Salesforce 访问令牌和使用这些访问令牌查询 Salesforce 都可以在simple_salesforcepython 客户端上正常工作。问题是在 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,我会重试并将新对象保存在全局变量中。

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

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

4

0 回答 0