Google Analytics Python API调用导致UnboundLocalError

问题描述

我有一个Python脚本,每天都会尝试调用一次Google Analytics(分析)API,以获取数据。但是,在某些电话上,我显然什么也没收到。那或者我错误地处理了错误。这是我用来调用api的函数

    def run_query(hour_in_dim,start_date,sessions_writer,connection_error_count,pagetoken=None):
        # Try to run api request for one day. Wait 10 seconds if "service is currently unavailable."
        try:
            traffic_results = get_api_query(analytics,pagetoken)
        except HttpError as err:
            if err.resp.status in [503]:
                print("Sleeping,api service temporarily unavailable.")
                time.sleep(10)
                run_query(hour_in_dim,pagetoken)
            else:
                raise
        except ConnectionResetError:
            connection_error_count += 1
            time.sleep(10)
            if connection_error_count > 2:
                raise
            else:
                run_query(hour_in_dim,pagetoken)


        # Todo: solve random occurances of "UnboundLocalError: local variable 'traffic_results' referenced before assignment"
        dimensions_ga = traffic_results['reports'][0]['columnHeader']['dimensions']
        rows = traffic_results['reports'][0]['data']['rows']

“未绑定本地错误”来自底部的第二行,我称这为流量结果,并尝试将其分配给Dimensions_ga变量。

解决方法

我相信问题是我在使用递归而不是循环。我使用了此处提供的示例代码:

https://developers.google.com/analytics/devguides/reporting/core/v3/errors

还将python 3的“除HttpError,error:以外的错误”更改为“除HttpError以外的错误”。

由于无法手动再现错误,因此不确定测试此方法的最佳方法。