파이썬 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)

jswit 증인 노드 프로젝트를 시작합니다.

jsup 업보팅(upvoting) 서비스 소개

jsup 수혜자 지정 기능 추가

jSTEEM 프로젝트 - 텔레그램 챗봇으로 구현하는 스팀 블럭체인 탐색기

STEEM.NFT - 디지털 아트 보존 프로젝트


Posted through the AVLE Dapp (https://avle.io)

Sort:  

Upvoted! Thank you for supporting witness @jswit.
default.jpg

Coin Marketplace

STEEM 0.36
TRX 0.12
JST 0.039
BTC 69965.85
ETH 3540.49
USDT 1.00
SBD 4.71