반응형
def sync_query(query):
client = bigquery.Client()
query_results = client.run_sync_query(query)
query_results.use_legacy_sql = False
query_results.timeout_ms = 3600000
query_results.run()
print "query.complate: ",query_results.complete
job = query_results.job
retry_count = 600
while retry_count > 0 and job.state != 'DONE':
print "retry_count:", retry_count
print "job.state:",job.state
retry_count -= 1
time.sleep(1)
job.reload() # API request
page_token = None
result_list = []
while True:
rows, total_rows, page_token = query_results.fetch_data(
max_results=10,
page_token=page_token)
for row in rows:
result_list.append(list(row))
if not page_token:
break
print result_list
return result_list
외부에서 Python으로 구글 빅쿼리 접속하여 쿼리 결과를 받는 경우,
이상하게도 리턴은 하는데, 결과 데이터를 받지 못하는 경우가 있었음
위와 같이, Job.state를 보고 완료될때까지 기다리는 코드 추가 후 테스트한 결과,
그런 문제는 발생하지 않았음.
반응형
'Programming > Python' 카테고리의 다른 글
python string to function call (0) | 2017.04.26 |
---|---|
flask log disable (0) | 2017.04.19 |
Tensorflow 설치 (0) | 2017.04.04 |
Python Unit Test (0) | 2016.12.14 |
plotly offline (0) | 2016.11.25 |