파이썬 beem에서 인터넷 회선 또는 API 노드 불안정성에 대한 대응
파이썬 beem에서 제공하는 객체(클래스)를 사용할 때는 API 노드와의 통신이 이루어지게 됩니다. 인터넷 회선에 문제가 생겨서 연결이 끊어지거나 API 노드가 응답이 없을 경우에는 예외(exception)가 발생합니다.
일회성으로 실행할 때는 크게 문제가 되지 않을 수도 있지만, 24시간 돌아가는 프로세스일 경우에는 새벽에 이런 일이 벌어질 수도 있기 때문에 try/except 구문을 이용한 예외 처리와 함께 재시도가 필요합니다.
이런 부분을 고려하지 않고 코딩할 경우에는 아래와 같이 될 것입니다. 코드는 파이썬 beem에 스팀 기준입니다만, 블러트에서도 Steem 대신에 Blurt를 사용할 뿐, 상황은 동일합니다.
from beem import Steem
node_list = ["https://api.steemit.com"]
steem = Steem(node=node_list)
account = Account('joviansummer', blockchain_instance=steem)
문제가 발생할 경우에 대비하여 while 구문을 이용한 무한 반복과 try/except 구문을 이용하여 아래와 같이 할 수 있습니다.
import time
from beem import Steem
node_list = ["https://api.steemit.com"]
while True:
try:
steem = Steem(node=node_list)
account = Account('joviansummer', blockchain_instance=steem)
break
except:
print("예외가 발생했습니다. 2분후에 재시도합니다.")
time.sleep(120)
continue
@joviansummer의 스팀 프로젝트
스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다.
(https://steemitwallet.com/~witnesses)
Upvoted! Thank you for supporting witness @jswit.
