파이썬에서 datetime.timezone()을 이용한 시간대 설정

by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/datetime-timezone 파이썬에서 datetime.timezone()을 이용해서 datetime 객체의 시간대를 설정할 수 있습니다. 예를 들어 한국시간(KST)은 GMT+9시간이므로 아래와 같이 설정해서 현재 시각을 구할 수 있습니다. import datetime KST = datetime.timezone(datetime.timedelta(hours=9)) now_kst = datetime.datetime.now(tz=KST) 시간대 정보가 없는 datetime 객체의 경우에는 앞의 예제 코드에서 정의된 변수 KST를 이용해서 아래와 같이 시간대를 할당할 수 있습니다. # 시간대 정보 없는 UTC 기준 현재시각 가져오기 - utcnow() now = datetime.datetime.utcnow() # 시간대 정보 추가 now_kst = now.astimezone(KST) @joviansummer의 스팀 프로젝트 스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다. ( https://steemitwallet.com/~witnesses ) jswit 증인 노드 프로젝트를 시작합니다. jsup 업보팅(upvoting) 서비스 소개 jsup 수혜자 지정 기능 추가 jsup 2.0 - 업보팅을 다시 위대하게 jSTEEM 프로젝트 - 텔레그램 챗봇으로 구현하는 스팀 블럭체인 탐색기 Steemit-Search - 스팀잇 포스팅 검색 STEEM.NFT - 디지털 아트 보존 프로젝트

파이썬 beem에서 account history API 사용할 때 유의할 점 (2번째)

by joviansummer
original STEEMIT post: https://steemit.com/blog/@joviansummer/beem-account-history-api-2


파이썬 beem에서 특정 계정의 트랜잭션 이력을 조회하는 account history API를 사용할 때 주의할 점을 얼마전에도 포스팅한 적이 있습니다. 아래의 링크입니다.

파이썬 beem에서 Account 객체의 history_reverse() 함수 사용할 때 유의점

account_history_reverse() 함수를 사용할 때 1회당 조회수(batch_size)를 20개 이하로 설정해야 된다는 내용이었습니다.

그런데 최근에 또 다른 제약 사항이 있음을 발견했습니다. 동일한 IP주소에서 요청을 전송할 경우 1초당 10회 미만이 되어야 합니다. 이것은 공식 스팀 API 노드(api.steemit.com)에서 확인한 내용이며, 다른 API 노드에는 이러한 제약이 없을 수도 있습니다.

어쨌든 이력을 조회할 때 통상 for 반복문을 사용하는데, 너무 자주 조회 요청이 나가지 않도록 time.sleep() 함수를 이용해서 최소한 0.1초 이상 쉬는 시간이 있도록 하지 않으면 응답이 제대로 오지 않고 예외(exception)가 발생합니다.

이전 포스트의 코드 예시에 time.sleep()을 추가하면 아래와 같이 될 것입니다. 좀 여유 있게 0.3초 기다린 후에 다음 트랜잭션을 조회하도록 수정한 경우입니다.

from beem import Steem
from beem.account import Account
import time

steem_node = ["https://api.steemit.com"]
steem = Steem(node=steem_node)

account = Account('joviansummer', blockchain_instance=steem)

history_data = account.history(start=1, stop=5, use_block_num=False, batch_size=20)
for record in history_data:
  print(record)
  # 0.3초 기다리기
  time.sleep(0.3)

@joviansummer의 스팀 프로젝트

스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다.
(https://steemitwallet.com/~witnesses)

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

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

jsup 수혜자 지정 기능 추가

jsup 2.0 - 업보팅을 다시 위대하게

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

Steemit-Search - 스팀잇 포스팅 검색

Comments

Popular posts from this blog

Nuitka - 파이썬 스크립트를 바이너리 실행 파일로 변환

파이썬에서 스팀잇 ID 및 포스팅 키 유효성 확인

파이썬에서 시간대(timezone) 변경