Skip to content

Commit b6761ea

Browse files
author
veehou
committed
fix: session复用
1 parent 68517b8 commit b6761ea

File tree

1 file changed

+15
-14
lines changed

1 file changed

+15
-14
lines changed

botpy/http.py

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ def __init__(
8989
self._token: Optional[Token] = None if not app_id else Token(app_id=app_id, access_token=token)
9090
self._global_over: Optional[asyncio.Event] = None
9191
self._headers: Optional[dict] = None
92+
self._session: Optional[aiohttp.ClientSession] = None
9293

9394
async def check_session(self):
9495
if not self._headers:
@@ -97,6 +98,11 @@ async def check_session(self):
9798
"User-Agent": "botpy/v1",
9899
}
99100

101+
if not self._session or self._session.closed:
102+
self._session = aiohttp.ClientSession(
103+
headers=self._headers, connector=TCPConnector(limit=500, ssl=SSLContext())
104+
)
105+
100106
async def request(self, route: Route, **kwargs: Any):
101107
# some checking if it's a JSON request
102108
if "json" in kwargs:
@@ -119,20 +125,15 @@ async def request(self, route: Route, **kwargs: Any):
119125
await self.check_session()
120126
route.is_sandbox = self.is_sandbox
121127
_log.debug(f"[botpy] 请求头部: {self._headers}, 请求方式: {route.method}, 请求url: {route.url}")
122-
123-
async with aiohttp.ClientSession(
124-
headers=self._headers, connector=TCPConnector(limit=500, ssl=SSLContext())
125-
) as session:
126-
_log.debug(session)
127-
128-
async with session.request(
129-
method=route.method,
130-
url=route.url,
131-
timeout=(aiohttp.ClientTimeout(total=self.timeout)),
132-
**kwargs,
133-
) as response:
134-
_log.debug(response)
135-
return await _handle_response(response)
128+
_log.debug(self._session)
129+
async with self._session.request(
130+
method=route.method,
131+
url=route.url,
132+
timeout=(aiohttp.ClientTimeout(total=self.timeout)),
133+
**kwargs,
134+
) as response:
135+
_log.debug(response)
136+
return await _handle_response(response)
136137

137138
async def login(self, token: Token) -> robot.Robot:
138139
"""login后保存token和session"""

0 commit comments

Comments
 (0)