From f6b9982c23d124a15717301eb2e41ecf9e81076e Mon Sep 17 00:00:00 2001 From: wochuideng <58800108+wochuideng@users.noreply.github.com> Date: Wed, 4 Sep 2024 21:44:57 +0800 Subject: [PATCH] Concurrent calls to the Wenxin model, and the exception problem when obtaining the token is fixed (#7976) Co-authored-by: puqs1 --- .../model_runtime/model_providers/wenxin/_common.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/api/core/model_runtime/model_providers/wenxin/_common.py b/api/core/model_runtime/model_providers/wenxin/_common.py index 0230c78b7..017856bdd 100644 --- a/api/core/model_runtime/model_providers/wenxin/_common.py +++ b/api/core/model_runtime/model_providers/wenxin/_common.py @@ -79,11 +79,13 @@ class BaiduAccessToken: # if access token not in cache, request it token = BaiduAccessToken(api_key) baidu_access_tokens[api_key] = token - # release it to enhance performance - # btw, _get_access_token will raise exception if failed, release lock here to avoid deadlock - baidu_access_tokens_lock.release() - # try to get access token - token_str = BaiduAccessToken._get_access_token(api_key, secret_key) + try: + # try to get access token + token_str = BaiduAccessToken._get_access_token(api_key, secret_key) + finally: + # release it to enhance performance + # btw, _get_access_token will raise exception if failed, release lock here to avoid deadlock + baidu_access_tokens_lock.release() token.access_token = token_str token.expires = now + timedelta(days=3) return token