【问题标题】:How to catch DNSLookupFailedError in Python on GAE?如何在 GAE 上捕获 Python 中的 DNS 查找失败错误?
【发布时间】:2012-10-30 09:31:37
【问题描述】:

我用 urlfetch 测试人们提供的 URL 以捕获错误的链接。

result = urlfetch.fetch(url)

当我提供诸如 «http://qwerty.uiop» 之类的 URL 时,日志显示存在 «DNSLookupFailedError»,但这段代码无法捕捉到它:

except urlfetch.DNSLookupFailedError:
self.error(400)
self.response.out.write(
  'Sorry, there was a problem with URL "' + url + '"')

我也试过“除了 urlfetch.Error:”和“除了 urlfetch.DownloadError:”

我做错了什么,还有其他方法可以完成我想做的事情吗?

【问题讨论】:

    标签: python google-app-engine error-handling dns urlfetch


    【解决方案1】:

    在本地开发人员环境和生产环境中,我实际上看到了一个不同的异常:DownloadError。捕捉对我来说效果很好。

    try:
      result = urlfetch.fetch('http://qwerty.uiop')
    except urlfetch.DownloadError:
      self.response.write('Oops!')
    

    【讨论】:

    • 由于我没有本地开发环境,我无法重现您所获得的内容——我正在 iPad 上进行开发。但这并没有在生产环境中解决它。它仍然说: raise DNSLookupFailedError('DNS lookup failed for URL: ' + url) DNSLookupFailedError: DNS lookup failed for URL: thdienr.rurhf
    • 有没有不同的方法来完成我想要做的事情?我只有三天的 Python 和 GAE,所以我经常迷失在这些小事情上。
    • 当您说您没有本地开发环境时,我不确定我是否理解您的意思。 App Engine SDK 附带本地开发环境 dev_appserver.py(或 Mac 启动器)。您是否使用在线课程进行开发?如果是这样,他们的环境可能会在常规生产环境之上添加其他行为。
    • 我从 iPad SSH 到 Amazon EC2 Ubuntu 实例,在该实例中我只“./appcfg.py update myapp”。然后我直接在 GAE 上测试我的代码——我把它称为上面的生产环境,这可能是我做错的。因此,无论如何都没有本地环境。很抱歉没有让自己足够清楚。
    • 它仍然是我使用的相同生产环境(谷歌的服务器)。您使用的是什么版本的 SDK?
    猜你喜欢
    • 2020-07-22
    • 1970-01-01
    • 2016-06-22
    • 2019-02-06
    • 1970-01-01
    • 1970-01-01
    • 2014-11-08
    • 1970-01-01
    • 2022-01-23
    相关资源
    最近更新 更多