1
1
import os
2
2
import json
3
+ import time
4
+
3
5
try :
4
6
import oss2
5
7
from oss2 import SizedFileAdapter , determine_part_size
@@ -23,44 +25,70 @@ def __init__(self, email, password):
23
25
24
26
def get (self , url , params , retry = 0 ):
25
27
headers = {'Authorization' : "jwt " + self ._token }
26
- ret = requests .get (
27
- urljoin (API_HOST , url ),
28
- params = params ,
29
- timeout = HTTP_TIME_OUT ,
30
- headers = headers
31
- )
28
+ ret = None
29
+ for retry_count in range (3 ):
30
+ try :
31
+ ret = requests .get (
32
+ urljoin (API_HOST , url ),
33
+ params = params ,
34
+ timeout = HTTP_TIME_OUT ,
35
+ headers = headers
36
+ )
37
+ except Exception as e :
38
+ dlog .error (f"request error { e } " )
39
+ continue
40
+ if ret .ok :
41
+ break
42
+ else :
43
+ dlog .error (f"request error status_code:{ ret .status_code } reason: { ret .reason } body: \n { ret .text } " )
44
+ time .sleep (retry_count * 10 )
45
+ if ret is None :
46
+ raise ConnectionError ("request fail" )
32
47
# print(url,'>>>', params, '<<<', ret.text)
48
+ ret .raise_for_status ()
33
49
ret = json .loads (ret .text )
34
50
if ret ['code' ] == RETCODE .TOKENINVALID and retry <= 3 :
35
- dlog .debug ("debug: token expire, refresh token" )
51
+ dlog .error ("debug: token expire, refresh token" )
36
52
if self ._login_data is not None :
37
53
self .refresh_token ()
38
54
ret = self .get (url , params , retry = retry + 1 )
39
55
return ret
40
56
if ret ['code' ] != RETCODE .OK :
41
57
raise ValueError (f"{ url } Error: { ret ['code' ]} { ret ['message' ]} " )
42
-
43
58
return ret ['data' ]
44
59
45
60
def post (self , url , params , retry = 0 ):
46
61
headers = {'Authorization' : "jwt " + self ._token }
47
- ret = requests .post (
48
- urljoin (API_HOST , url ),
49
- json = params ,
50
- timeout = HTTP_TIME_OUT ,
51
- headers = headers
52
- )
53
- # print(url,'>>>', params, '<<<', ret.text)
62
+ ret = None
63
+ for retry_count in range (3 ):
64
+ try :
65
+ ret = requests .post (
66
+ urljoin (API_HOST , url ),
67
+ json = params ,
68
+ timeout = HTTP_TIME_OUT ,
69
+ headers = headers
70
+ )
71
+ except Exception as e :
72
+ dlog .error (f"request error { e } " )
73
+ continue
74
+ if ret .ok :
75
+ break
76
+ else :
77
+ dlog .error (f"request error status_code:{ ret .status_code } reason: { ret .reason } body: \n { ret .text } " )
78
+ time .sleep (retry_count )
79
+ if ret is None :
80
+ raise ConnectionError ("request fail" )
81
+ ret .raise_for_status ()
54
82
ret = json .loads (ret .text )
83
+ # print(url,'>>>', params, '<<<', ret.text)
55
84
if ret ['code' ] == RETCODE .TOKENINVALID and retry <= 3 :
56
- dlog .debug ("debug: token expire, refresh token" )
85
+ dlog .error ("debug: token expire, refresh token" )
57
86
if self ._login_data is not None :
58
87
self .refresh_token ()
59
88
ret = self .post (url , params , retry = retry + 1 )
60
89
return ret
61
90
if ret ['code' ] != RETCODE .OK :
62
91
raise ValueError (f"{ url } Error: { ret ['code' ]} { ret ['message' ]} " )
63
-
64
92
return ret ['data' ]
65
93
66
94
def refresh_token (self ):
0 commit comments