sheet api read/write limit 문제해결

2021. 9. 13. 21:11·코드와 오류 기록

사실상 업무용 DB를 구글 스프레드 시트에 백업하고 쓰는 구조를 갖다보니 sheet api의 제약사항에 굉장히 민감해질 수 밖에 없다. athena에 쿼리해서 데이터를 불러오고 다시 구글 시트의 내용을 불러오고 밀어넣는 과정에서 api limit에 걸리면서 오류가 나는 경우가 많다. 특히 최근에는 여러 데이터를 하나의 시트에 동시다발적으로 밀어넣어서 더 그랬던 것 같다.

다른 시트는 row가 하나인 것에 비해 특정 시트는 하루에 여러개의 데이터가 여러 row로 들어가서 문제가 자주 발생했는데 하나의 라인을 업데이트 하는 방식이 아닌 append_rows에 여러개의 line 리스트를 넣었다.

report_line = [dateFormula, 1, 2, 3, 4, 5]

기존에 이런 report_line을 for loop에서 여러번 입력하는 방식을 썼다면 지금은 아래처럼 리스트를 한번 더 묶어서 업데이트할 데이터를 미리 준비해두었다.

report_line_list = []
for data in datas:
	report_line = [dateFormula, 1, 2, 3, 4, 5]
    report_line_list.append(report_line)

그리고 업데이트 할 데이터가 모두 report_line_list에 들어가면 아래와 같은 코드를 추가로 실행해서 시트를 한번에 업데이트 하도록 했다.

 sheet.append_rows(values=report_line_list)
 row_num = len(sheet.col_values(1))
 cell_list = sheet1.range('A1:A{}'.format(row_num))
 sheet.update_cells(cell_list, value_input_option='USER_ENTERED')

cell_list는 날짜가 있는 부분이고 value_input_option에 'USER_ENTERED'를 넣음으로써 =(DATE("%Y,%m,%d")) 가 날짜 형식으로 입력될 수 있도록 했다.

 

시간을 낼 수 없어서 급한대로 time.sleep을 for loop 전에 10초, for문 돌면서 3초씩 멈췄다가 하도록 해놨었는데 3~4분 걸리던 작업이 이렇게 하니 limit에 걸리지도 않고 깃헙 액션에서 1분만에 돌아갔다. (시간을 핑계로 꼼수를 쓰지 말자.. 스파게티 된다.)

저작자표시 비영리 변경금지 (새창열림)

'코드와 오류 기록' 카테고리의 다른 글

SQL timezone 변경하기  (1) 2021.10.19
github 토큰 만료 후 재인증 안되는 문제 해결  (1) 2021.09.23
자주 사는 물건 매일 가격보기  (0) 2021.09.09
파이썬 매월 시작일(공휴일 무시) 간단하게 만들기  (0) 2021.08.25
파이썬 특정 기간의 날짜 for문 돌리기  (0) 2021.08.25
'코드와 오류 기록' 카테고리의 다른 글
  • SQL timezone 변경하기
  • github 토큰 만료 후 재인증 안되는 문제 해결
  • 자주 사는 물건 매일 가격보기
  • 파이썬 매월 시작일(공휴일 무시) 간단하게 만들기
신사(SinSa)
신사(SinSa)
#취미 사진가 #IT 직장인 경험하고 배운 것들을 글로, 사진으로 기록하고 있어요
  • 신사(SinSa)
    신사(SinSa)
    신사(SinSa)
  • 전체
    오늘
    어제
    • View all (425)
      • 잡념과 생각 (104)
      • 코드와 오류 기록 (80)
      • 사진 이야기 (10)
      • 교육과 육아 (12)
      • Brand (2)
      • 자료 모음 (46)
      • 축구 이야기(deprecated) (171)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    축구협회
    박주영
    fc서울
    Po
    아이폰 게임
    맨유
    축구
    홍명보호
    프로덕트오너
    PM
    프로덕트 매니저
    한국축구
    국가대표팀
    김주영
    애자일
    프로덕트 오너
    아스날
    k리그
    프로축구
    아이폰 축구게임
    경남FC
    Product Manager
    한국 축구
    국가대표팀 감독
    승강제
    Product Owner
    대한축구협회
    쿠웨이트전
    대치키즈
    스타트업
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
신사(SinSa)
sheet api read/write limit 문제해결
상단으로

티스토리툴바