@@ -89,6 +89,7 @@ def __init__(
89
89
self ._token : Optional [Token ] = None if not app_id else Token (app_id = app_id , access_token = token )
90
90
self ._global_over : Optional [asyncio .Event ] = None
91
91
self ._headers : Optional [dict ] = None
92
+ self ._session : Optional [aiohttp .ClientSession ] = None
92
93
93
94
async def check_session (self ):
94
95
if not self ._headers :
@@ -97,6 +98,11 @@ async def check_session(self):
97
98
"User-Agent" : "botpy/v1" ,
98
99
}
99
100
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
+
100
106
async def request (self , route : Route , ** kwargs : Any ):
101
107
# some checking if it's a JSON request
102
108
if "json" in kwargs :
@@ -119,20 +125,15 @@ async def request(self, route: Route, **kwargs: Any):
119
125
await self .check_session ()
120
126
route .is_sandbox = self .is_sandbox
121
127
_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 )
136
137
137
138
async def login (self , token : Token ) -> robot .Robot :
138
139
"""login后保存token和session"""
0 commit comments