Google ads api 服务\uuuu len\uuuuu未发现意外错误,已安全恢复
蟒蛇3.8 我的代码:Google ads api 服务\uuuu len\uuuuu未发现意外错误,已安全恢复,google-ads-api,Google Ads Api,蟒蛇3.8 我的代码: from googleads import adwords def execute_request(): adwords_client = adwords.AdWordsClient.LoadFromStorage(path="google_general/googleads.yaml") campaign_service = adwords_client.GetService('CampaignService', version='v201809')
from googleads import adwords
def execute_request():
adwords_client = adwords.AdWordsClient.LoadFromStorage(path="google_general/googleads.yaml")
campaign_service = adwords_client.GetService('CampaignService', version='v201809')
pass
context["dict_list"] = execute_request()
Traceback (most recent call last):
File "/home/michael/pycharm-community-2019.3.2/plugins/python-ce/helpers/pydev/_pydevd_bundle/pydevd_xml.py", line 282, in frame_vars_to_xml
xml += var_to_xml(v, str(k), evaluate_full_value=eval_full_val)
File "/home/michael/pycharm-community-2019.3.2/plugins/python-ce/helpers/pydev/_pydevd_bundle/pydevd_xml.py", line 369, in var_to_xml
elif hasattr(v, "__len__") and not is_string(v):
File "/home/michael/PycharmProjects/ads3/venv/lib/python3.8/site-packages/googleads/common.py", line 694, in __getattr__
raise googleads.errors.GoogleAdsValueError('Service %s not found' % attr)
googleads.errors.GoogleAdsValueError: Service __len__ not found
Unexpected error, recovered safely.
回溯:
from googleads import adwords
def execute_request():
adwords_client = adwords.AdWordsClient.LoadFromStorage(path="google_general/googleads.yaml")
campaign_service = adwords_client.GetService('CampaignService', version='v201809')
pass
context["dict_list"] = execute_request()
Traceback (most recent call last):
File "/home/michael/pycharm-community-2019.3.2/plugins/python-ce/helpers/pydev/_pydevd_bundle/pydevd_xml.py", line 282, in frame_vars_to_xml
xml += var_to_xml(v, str(k), evaluate_full_value=eval_full_val)
File "/home/michael/pycharm-community-2019.3.2/plugins/python-ce/helpers/pydev/_pydevd_bundle/pydevd_xml.py", line 369, in var_to_xml
elif hasattr(v, "__len__") and not is_string(v):
File "/home/michael/PycharmProjects/ads3/venv/lib/python3.8/site-packages/googleads/common.py", line 694, in __getattr__
raise googleads.errors.GoogleAdsValueError('Service %s not found' % attr)
googleads.errors.GoogleAdsValueError: Service __len__ not found
Unexpected error, recovered safely.
googleads.yaml关于日志记录的信息
logging:
version: 1
disable_existing_loggers: False
formatters:
default_fmt:
format: ext://googleads.util.LOGGER_FORMAT
handlers:
default_handler:
class: logging.StreamHandler
formatter: default_fmt
level: DEBUG
loggers:
# Configure root logger
"":
handlers: [default_handler]
level: DEBUG
我刚刚开始研究API。
也就是说,我正在尝试执行我的第一个请求()
你能帮我解决这个问题吗?至少如何更精确地对其进行本地化。这似乎是一个问题,其原因是PyCharm调试器在调试期间检查活动对象的方式 具体地说,它检查给定对象在
var\u to\u xml
的代码中是否具有\uu len\uuu
属性/方法,最有可能为调试器接口确定对象的适当表示(这似乎需要构造xml表示)
googleads
服务对象,例如您的campaign\u服务
,但是,使用一些魔法可以在它们上调用已定义的SOAP方法,而无需对所有这些方法进行硬编码。代码如下所示:
def\uu getattr\uuu(self,attr):
“”“支持服务。方法()语法。”“”
如果采用自组织方法(attr):
如果attr不在self.\u方法\u代理中:
self.\u方法\u代理[attr]=self.\u创建方法(attr)
返回self.\u方法\u代理[attr]
其他:
raise GOGLEADS.errors.GOGLEADSVALUERROR('找不到服务%s'%attr]
这意味着调试器对潜在的\uuuu len\uuu
属性的检查被拦截,并且由于没有名为\uuuu len\uu
的SOAP操作,因此引发异常
您可以通过以常规方式运行代码段(即不调试代码段)并检查其是否有效来验证这一点
实际的修复似乎需要PyCharm的调试器改变它检查对象的方式(不调用hasattr(v,“\uu len\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu”),或者
Googleds
修改它实现的方式,例如,通过实际实现一个只引发属性错误的方法,dorian,您好。谢谢你的回答。但是你建议用什么IDE来代替PyCharm?PyCharm的bug tracker解决方案中的对应问题是编辑调试器源代码,并用try/except将有问题的地方包装起来,直到下一次更新@Michael,我自己使用PyCharm。JetBrains非常在意在这里直接发表评论,这一事实验证了这一选择:)