@@ -37,20 +37,19 @@ def __init__(self, email=None, password=None, debug=False,
37
37
self .last_log_offset = 0
38
38
39
39
def post (self , url , data = None , header = None , params = None , retry = 5 ):
40
- self .refresh_token ()
41
40
return self ._req ('POST' , url , data = data , header = header , params = params , retry = retry )
42
41
43
42
def get (self , url , header = None , params = None , retry = 5 ):
44
- self .refresh_token ()
45
43
return self ._req ('GET' , url , header = header , params = params , retry = retry )
46
44
47
45
def _req (self , method , url , data = None , header = None , params = None , retry = 5 ):
48
46
short_url = url
49
47
url = urllib .parse .urljoin (self .base_url , url )
50
48
if header is None :
51
49
header = {}
52
- if self .token :
53
- header ['Authorization' ] = f'jwt { self .token } '
50
+ if not self .token :
51
+ self .refresh_token ()
52
+ header ['Authorization' ] = f'jwt { self .token } '
54
53
resp_code = None
55
54
err = None
56
55
for i in range (retry ):
@@ -70,16 +69,17 @@ def _req(self, method, url, data=None, header=None, params=None, retry=5):
70
69
try :
71
70
result = resp .json ()
72
71
err = result .get ("error" )
73
- except :
72
+ except Exception :
74
73
pass
75
74
time .sleep (0.1 * i )
76
75
continue
77
76
result = resp .json ()
78
77
if result ['code' ] == '0000' or result ['code' ] == 0 :
79
78
return result .get ('data' , {})
80
79
else :
80
+ self .token = ""
81
+ self .refresh_token ()
81
82
err = result .get ('message' ) or result .get ('error' )
82
- break
83
83
raise RequestInfoException (resp_code , short_url , err )
84
84
85
85
def _login (self ):
@@ -94,22 +94,37 @@ def _login(self):
94
94
# print(self.token)
95
95
self .user_id = resp ['user_id' ]
96
96
97
- def refresh_token (self ):
97
+ def refresh_token (self , retry = 3 ):
98
98
url = '/account/login'
99
99
post_data = {
100
100
'email' : self .config ['email' ],
101
101
'password' : self .config ['password' ]
102
102
}
103
- ret = requests .post (
104
- urljoin (API_HOST , url ),
105
- json = post_data ,
106
- timeout = HTTP_TIME_OUT ,
107
- )
108
- ret = json .loads (ret .text )
109
- if ret ['code' ] == RETCODE .OK or ret ['code' ] == 0 :
110
- self .token = ret ['data' ]['token' ]
111
- return
112
- raise ValueError (f"{ url } Error: { ret ['code' ]} { ret .get ('message' , ret .get ('error' ))} " )
103
+ resp_code = None
104
+ err = None
105
+ for i in range (retry ):
106
+ resp = requests .post (
107
+ urljoin (API_HOST , url ),
108
+ json = post_data ,
109
+ timeout = HTTP_TIME_OUT ,
110
+ )
111
+ resp_code = resp .status_code
112
+ if not resp .ok :
113
+ if self .debug :
114
+ print (f"login retry: { i } ,statusCode: { resp .status_code } " )
115
+ try :
116
+ result = resp .json ()
117
+ err = result .get ("error" )
118
+ except Exception :
119
+ pass
120
+ time .sleep (1 * i )
121
+ continue
122
+
123
+ result = resp .json ()
124
+ if result ['code' ] == RETCODE .OK or result ['code' ] == 0 :
125
+ self .token = result ['data' ]['token' ]
126
+ return
127
+ raise RequestInfoException (resp_code , url , err )
113
128
114
129
def _get_oss_bucket (self , endpoint , bucket_name ):
115
130
# res = get("/tools/sts_token", {})
0 commit comments