dryrun.sh live.s 远程币对列表改成每隔3秒重试一次,最多重试5次,如果还不行, 使用空列表
This commit is contained in:
parent
ebdb3adb78
commit
878af56ed5
@ -22,10 +22,13 @@ get_open_trades_pairs() {
|
||||
echo "${pairs[@]}"
|
||||
}
|
||||
|
||||
# 2. 从远程接口获取币对列表
|
||||
# 2. 从远程接口获取币对列表(带重试机制)
|
||||
get_remote_pairs() {
|
||||
local remote_url="$1"
|
||||
local pairs=()
|
||||
local max_retries=5
|
||||
local retry_delay=3
|
||||
local attempt=1
|
||||
|
||||
if [ -z "$remote_url" ]; then
|
||||
echo "⚠️ 未提供远程币对列表URL,远程币对列表为空" >&2
|
||||
@ -33,30 +36,44 @@ get_remote_pairs() {
|
||||
return
|
||||
fi
|
||||
|
||||
echo "正在从远程URL获取币对列表: $remote_url" >&2
|
||||
local pairs_json=$(curl -s "$remote_url")
|
||||
# 重试循环
|
||||
while [ $attempt -le $max_retries ]; do
|
||||
echo "正在从远程URL获取币对列表 (尝试 $attempt/$max_retries): $remote_url" >&2
|
||||
local pairs_json=$(curl -s "$remote_url")
|
||||
|
||||
if [ $? -ne 0 ] || [ -z "$pairs_json" ]; then
|
||||
echo "⚠️ 远程币对列表获取失败,使用空列表" >&2
|
||||
echo ""
|
||||
return
|
||||
fi
|
||||
|
||||
local parsed_pairs=$(echo "$pairs_json" | python3 -c "
|
||||
if [ $? -eq 0 ] && [ -n "$pairs_json" ]; then
|
||||
# curl 成功且有返回内容,尝试解析
|
||||
local parsed_pairs=$(echo "$pairs_json" | python3 -c "
|
||||
import sys, json
|
||||
data = json.load(sys.stdin)
|
||||
pairs = [pair.replace('-', '/') for pair in data.get('pairlist', [])]
|
||||
print(' '.join(pairs) if pairs else '')
|
||||
try:
|
||||
data = json.load(sys.stdin)
|
||||
pairs = [pair.replace('-', '/') for pair in data.get('pairlist', [])]
|
||||
print(' '.join(pairs) if pairs else '')
|
||||
except:
|
||||
pass
|
||||
")
|
||||
|
||||
if [ -n "$parsed_pairs" ]; then
|
||||
pairs=($parsed_pairs)
|
||||
echo "从远程获取到币对: ${pairs[*]}" >&2
|
||||
else
|
||||
echo "⚠️ 远程币对列表解析为空" >&2
|
||||
fi
|
||||
if [ -n "$parsed_pairs" ]; then
|
||||
pairs=($parsed_pairs)
|
||||
echo "✓ 从远程成功获取到币对: ${pairs[*]}" >&2
|
||||
echo "${pairs[*]}"
|
||||
return 0
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "${pairs[@]}"
|
||||
# 如果不是最后一次尝试,等待后重试
|
||||
if [ $attempt -lt $max_retries ]; then
|
||||
echo "⚠️ 获取失败,${retry_delay}秒后重试..." >&2
|
||||
sleep $retry_delay
|
||||
fi
|
||||
|
||||
attempt=$((attempt + 1))
|
||||
done
|
||||
|
||||
# 所有重试都失败
|
||||
echo "✗ 远程币对列表获取失败(已重试${max_retries}次),使用空列表" >&2
|
||||
echo ""
|
||||
return 1
|
||||
}
|
||||
|
||||
# 3. 合并并去重两个币对列表
|
||||
|
||||
@ -78,10 +78,13 @@ validate_json_file() {
|
||||
fi
|
||||
}
|
||||
|
||||
# 3. 从远程URL获取币对列表
|
||||
# 3. 从远程URL获取币对列表(带重试机制)
|
||||
get_remote_pairs() {
|
||||
local remote_url="$1"
|
||||
local pairs=()
|
||||
local max_retries=5
|
||||
local retry_delay=3
|
||||
local attempt=1
|
||||
|
||||
if [ -z "$remote_url" ]; then
|
||||
echo "⚠️ 未提供远程币对列表URL,远程币对列表为空" >&2
|
||||
@ -89,30 +92,44 @@ get_remote_pairs() {
|
||||
return
|
||||
fi
|
||||
|
||||
echo "正在从远程URL获取币对列表: $remote_url" >&2
|
||||
local pairs_json=$(curl -s "$remote_url")
|
||||
# 重试循环
|
||||
while [ $attempt -le $max_retries ]; do
|
||||
echo "正在从远程URL获取币对列表 (尝试 $attempt/$max_retries): $remote_url" >&2
|
||||
local pairs_json=$(curl -s "$remote_url")
|
||||
|
||||
if [ $? -ne 0 ] || [ -z "$pairs_json" ]; then
|
||||
echo "⚠️ 远程币对列表获取失败,使用空列表" >&2
|
||||
echo ""
|
||||
return
|
||||
fi
|
||||
|
||||
local parsed_pairs=$(echo "$pairs_json" | python3 -c "
|
||||
if [ $? -eq 0 ] && [ -n "$pairs_json" ]; then
|
||||
# curl 成功且有返回内容,尝试解析
|
||||
local parsed_pairs=$(echo "$pairs_json" | python3 -c "
|
||||
import sys, json
|
||||
data = json.load(sys.stdin)
|
||||
pairs = [pair.replace('-', '/') for pair in data.get('pairlist', [])]
|
||||
print(' '.join(pairs) if pairs else '')
|
||||
try:
|
||||
data = json.load(sys.stdin)
|
||||
pairs = [pair.replace('-', '/') for pair in data.get('pairlist', [])]
|
||||
print(' '.join(pairs) if pairs else '')
|
||||
except:
|
||||
pass
|
||||
")
|
||||
|
||||
if [ -n "$parsed_pairs" ]; then
|
||||
pairs=($parsed_pairs)
|
||||
echo "从远程获取到币对: ${pairs[*]}" >&2
|
||||
else
|
||||
echo "⚠️ 远程币对列表解析为空" >&2
|
||||
fi
|
||||
if [ -n "$parsed_pairs" ]; then
|
||||
pairs=($parsed_pairs)
|
||||
echo "✓ 从远程成功获取到币对: ${pairs[*]}" >&2
|
||||
echo "${pairs[*]}"
|
||||
return 0
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "${pairs[@]}"
|
||||
# 如果不是最后一次尝试,等待后重试
|
||||
if [ $attempt -lt $max_retries ]; then
|
||||
echo "⚠️ 获取失败,${retry_delay}秒后重试..." >&2
|
||||
sleep $retry_delay
|
||||
fi
|
||||
|
||||
attempt=$((attempt + 1))
|
||||
done
|
||||
|
||||
# 所有重试都失败
|
||||
echo "✗ 远程币对列表获取失败(已重试${max_retries}次),使用空列表" >&2
|
||||
echo ""
|
||||
return 1
|
||||
}
|
||||
|
||||
# 4. 合并并去重多个币对列表
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user