From b70a2da2ef14fa55475d4f2a8fdff8c2af823c41 Mon Sep 17 00:00:00 2001 From: Rock Chin Date: Tue, 13 Dec 2022 16:04:51 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E7=BA=BF=E7=A8=8B?= =?UTF-8?q?=E9=94=81=E7=9B=B8=E5=85=B3=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/openai/manager.py | 3 +++ pkg/openai/session.py | 12 +++++++----- pkg/qqbot/manager.py | 2 ++ 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/pkg/openai/manager.py b/pkg/openai/manager.py index 814ad0d1..fed9fd2c 100644 --- a/pkg/openai/manager.py +++ b/pkg/openai/manager.py @@ -1,5 +1,7 @@ import openai +import config + inst = None @@ -22,6 +24,7 @@ class OpenAIInteract: response = openai.Completion.create( prompt=prompt, stop=stop, + timeout=config.process_message_timeout, **self.api_params ) return response diff --git a/pkg/openai/session.py b/pkg/openai/session.py index 7a3e4ec4..aa0f6ba7 100644 --- a/pkg/openai/session.py +++ b/pkg/openai/session.py @@ -100,9 +100,10 @@ class Session: # 释放锁 def release_response_lock(self): - logging.debug('{},lock release,{}'.format(self.name, self.response_lock)) - self.response_lock.release() - logging.debug('{},lock release successfully,{}'.format(self.name, self.response_lock)) + if self.response_lock.locked(): + logging.debug('{},lock release,{}'.format(self.name, self.response_lock)) + self.response_lock.release() + logging.debug('{},lock release successfully,{}'.format(self.name, self.response_lock)) def __init__(self, name: str): self.name = name @@ -110,7 +111,7 @@ class Session: self.last_interact_timestamp = int(time.time()) self.schedule() - self.response_lock = threading.RLock() + self.response_lock = threading.Lock() # 设定检查session最后一次对话是否超过过期时间的计时器 def schedule(self): @@ -144,7 +145,8 @@ class Session: # 向API请求补全 response = pkg.openai.manager.get_inst().request_completion(self.cut_out(self.prompt + self.user_name + ':' + text + '\n' + self.bot_name + ':', - max_rounds, max_length), self.user_name + ':') + max_rounds, max_length), + self.user_name + ':') self.prompt += self.user_name + ':' + text + '\n' + self.bot_name + ':' # print(response) diff --git a/pkg/qqbot/manager.py b/pkg/qqbot/manager.py index 9cf6505d..2e20e316 100644 --- a/pkg/qqbot/manager.py +++ b/pkg/qqbot/manager.py @@ -225,10 +225,12 @@ class QQBotManager: reply = self.process_message('person', event.sender.id, str(event.message_chain)) break except FunctionTimedOut: + pkg.openai.session.get_session('person_{}'.format(event.sender.id)).release_response_lock() failed += 1 continue if failed == self.retry: + pkg.openai.session.get_session('person_{}'.format(event.sender.id)).release_response_lock() self.notify_admin("{} 请求超时".format("person_{}".format(event.sender.id))) reply = "[bot]err:请求超时"