파이썬 beem에서 인터넷 회선 또는 API 노드 불안정성에 대한 대응 - 2
- Get link
- X
- Other Apps
by joviansummer
original STEEMIT post: https://steemit.com/blog/@joviansummer/beem-api-2
여기에 정리하는 내용은 이전에 포스팅했던 대응 방안의 확장입니다. 우선 이전에 정리했던 내용은 아래의 링크입니다.
파이썬 beem에서 인터넷 회선 또는 API 노드 불안정성에 대한 대응
위의 포스트에서는 접속이 안될 경우에 대비해서 무한 루프와 try/except 구문으로 계속 재시도하는 코드 예시를 제시했습니다.
여기서는 스팀잇 공식 API노드(api.steemit.com)에 접속시도를 2회 이상 해도 실패할 경우 다른 비공식 API노드에 접속을 시도하는 예시를 생각해 보겠습니다. 아래의 코드입니다.
import time
from beem import Steem
from beem.account import Account
steem_nodes = ["https://api.steemit.com", "https://api.justyy.com"]
connection_flag = 0
while True:
for node_url in steem_nodes:
try:
s = Steem(node=node_url, num_retries=2, timeout=90)
a = Account('joviansummer', blockchain_instance=s)
print("연결 성공:", node_url)
connection_flag = 1
break
except:
print("예외 발생:", node_url)
time.sleep(1)
if connection_flag == 1:
break
else:
print("API노드 연결 실패. 1분후 재시도합니다.")
time.sleep(60)
Steem 객체를 사용할 때 90초 이내에 응답이 오지 않고(timeout=90) 재접속을 2회 해도 성공하지 못하면(num_retries=2) 다음 API노드에 접속을 시도하는 형태입니다.
응답시간과 재접속 회수 제한 설정에 대한 내용은 이전 포스트를 참고하시기 바랍니다. 아래의 링크입니다.
파이썬 beem에서 Steem 객체를 사용할 때 재시도 회수와 시간초과 설정
@joviansummer의 스팀 프로젝트
스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다.
(https://steemitwallet.com/~witnesses)
jSTEEM 프로젝트 - 텔레그램 챗봇으로 구현하는 스팀 블럭체인 탐색기
Posted through the AVLE Dapp (https://avle.io)
- Get link
- X
- Other Apps
Comments
Post a Comment