파이썬 beem에서 스팀 API 노드에 문제가 있을 경우 다른 노드로 전환하는 방법입니다. 접속 대상 노드 목록을 리스트(list)로 가지고 있다가, 접속에 실패하면 순차적으로 다른 노드에 접속하도록 할 수 있습니다. 예제를 보겠습니다.
from beem import Steem
from beem.account import Account
import time
# 접속 노드 목록
node_list = ['https://api.steemit.com', 'https://"https://steemapi.boylikegirl.club"]
# 초기 인덱스값 0
node_idx = 0
while True:
try:
print("API 노드 접속:", node_list[node_idx])
# 인덱스 node_idx에 해당하는 원소가 접속 대상 API노드
s = Steem(node=node_list[node_idx])
a = Account(steem_id, blockchain_instance=s)
# 예외 발생 없이 접속이 완료되었으면 무한 루프에서 탈출
break
except:
print("API 노드 접속 실패:", node_list[node_idx])
print("다른 노드로 전환합니다.")
# 다음 인덱스에 있는 노드로 접속하도록 node_idx 갱신
node_idx = (node_idx + 1) % node_list_len
print("접속 성공:", node_list[node_idx])
try/except 구문을 이용해서 Steem 객체와 Account 객체가 예외 발생 없이 정상적으로 생성되면 무한 루프를 빠져나오고, 예외가 발생하면 접속 대상 노드를 바꾸는 방식입니다.