Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
lichenggang
/
tas_token_server
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
e1ce57fb
authored
Sep 29, 2025
by
刘豪
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
digikey 重试逻辑更改
parent
21c46dcb
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
34 additions
and
24 deletions
lib/apidigikey.py
lib/apidigikey.py
View file @
e1ce57fb
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import
json
import
time
import
traceback
import
redis
...
...
@@ -54,16 +55,8 @@ class DGTokenCrawler(token_lib.BaseTokenCrawler):
def
collect_token
(
self
):
try
:
token_json
=
self
.
get_token_by_refresh_token
()
if
not
token_json
.
get
(
'access_token'
,
''
):
# dd_send_msg('digikey自动登录同步token')
# resp_data = self.get_token_json()
# if resp_data == False:
# mgs = "digikey 刷新token失败,请手动获取"
# dd_send_msg(mgs)
# self.logger.error(mgs)
# raise Exception(mgs)
# token_json = resp_data['data']
mgs
=
"digikey返回内容异常:{} 刷新token失败,请手动获取"
.
format
(
json
.
dumps
(
token_json
))
if
token_json
is
None
:
mgs
=
"digikey返回内容异常, 刷新token失败,请手动获取"
dd_send_msg
(
mgs
)
self
.
logger
.
error
(
mgs
)
raise
Exception
(
mgs
)
...
...
@@ -73,6 +66,7 @@ class DGTokenCrawler(token_lib.BaseTokenCrawler):
dd_send_msg
(
'digikey token同步失败:'
+
traceback
.
format_exc
())
self
.
logger
.
error
(
traceback
.
format_exc
())
def
save_token_to_redis
(
self
,
token_json
):
access_token
,
refresh_token
=
token_json
[
'access_token'
],
token_json
[
'refresh_token'
]
apidigikey_log
.
info
(
"access_token:"
+
access_token
)
...
...
@@ -105,20 +99,36 @@ class DGTokenCrawler(token_lib.BaseTokenCrawler):
token_json
=
resp
.
json
()
return
token_json
[
'access_token'
],
token_json
[
'refresh_token'
]
@retry
(
tries
=
5
,
delay
=
30
)
def
get_token_by_refresh_token
(
self
):
refresh_token
=
self
.
_redis
.
get
(
self
.
refresh_token_key
)
.
decode
()
p_data
=
{
'client_id'
:
self
.
client_id
,
'client_secret'
:
self
.
client_secret
,
'refresh_token'
:
refresh_token
,
# 'refresh_token': 'jwki255qAu14VPDGhuJKQVPHixiAGO1D',
'grant_type'
:
'refresh_token'
}
resp
=
requests
.
post
(
p_url
,
headers
=
p_headers
,
data
=
p_data
,
timeout
=
60
)
self
.
logger
.
info
(
"digikey token 返回内容:{}"
.
format
(
resp
.
text
))
token_json
=
resp
.
json
()
return
token_json
def
get_token_by_refresh_token
(
self
,
count
=
1
):
if
count
>
5
:
# 最多重试5次
return
None
self
.
logger
.
info
(
"尝试获取token第{}次"
.
format
(
count
))
count
+=
1
try
:
refresh_token
=
self
.
_redis
.
get
(
self
.
refresh_token_key
)
.
decode
()
p_data
=
{
'client_id'
:
self
.
client_id
,
'client_secret'
:
self
.
client_secret
,
'refresh_token'
:
refresh_token
,
'grant_type'
:
'refresh_token'
}
resp
=
requests
.
post
(
p_url
,
headers
=
p_headers
,
data
=
p_data
,
timeout
=
60
)
self
.
logger
.
info
(
"digikey token 返回内容:{}"
.
format
(
resp
.
text
))
token_json
=
resp
.
json
()
if
not
token_json
.
get
(
'access_token'
,
''
):
self
.
logger
.
info
(
"返回内容异常,休眠30s"
)
time
.
sleep
(
30
)
# 说明digikey接口内容返回异常,尝试再次获取,不确定refresh_token经过一次请求后返回内容异常时是否失效,需观察,如果失效的话,那么重试就没有任何意义了
self
.
get_token_by_refresh_token
(
count
)
else
:
return
token_json
except
Exception
:
# 通常是超时了,休眠1分钟后重新尝试获取,但是超时的报错不确定refresh_token是否就会因此失效,所以还得观察
self
.
logger
.
error
(
"报错,休眠1分钟,{}"
.
format
(
traceback
.
format_exc
()))
time
.
sleep
(
60
)
self
.
get_token_by_refresh_token
(
count
)
def
process
(
self
,
is_main
):
self
.
collect_token
()
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment