谷歌应用程序引擎ApplicationError:2个非数字端口:''

时间:2010-07-12 13:34:07

标签: python google-app-engine

我得到了ApplicationError:2个非数字端口:''随机约为我网址请求的十分之一,其余工作正常,我看到这是一个错误,但我还没有找到任何解决方案,任何人都有任何想法为什么会这样?我正在运行python 2.5.4和谷歌应用引擎1.3.3

这是一些通用代码,在随机请求页面时发生错误

def overview(page):
     try:
          page = "http://www.url.com%s.json?" %page
          u = urllib.urlopen(page.encode('utf-8'))
          bytes = StringIO(u.read())
          u.close()
     except Exception, e:
          print e
          return None
     try:
        JSON_data = json.load(bytes)
        return JSON_data
     except ValueError:
        print "Couldn't get .json for %s" % page
        return None  

1 个答案:

答案 0 :(得分:1)

您的代码可能会出现问题。一个是你没有对页面的传入值做任何事情,但它被你的try块中的赋值所覆盖了。另外,正如我在评论中指出的那样,赋值中的%s希望有一个变量替换它的位置。这可能与页面参数中的值有关。试试这个:

def overview(page_to_get):
     try:
          page = "http://www.url.com%s.json?" % page_to_get
          u = urllib.urlopen(page.encode('utf-8'))
          bytes = StringIO(u.read())
          u.close()
     except Exception, e:
          print e
          return None
     try:
        JSON_data = json.load(bytes)
        return JSON_data
     except ValueError:
        print "Couldn't get .json for %s" % page
        return None 

编辑:

@ user291071:我猜想通过概述参数页面传入的某些值不会以前导斜杠开头。确保URL解析器不会尝试将附加信息解释为端口号的唯一方法是确保它以/或?开头。也许这对你更有效:

          page = "http://www.url.com/%s.json?" % page_to_get

但它可能会导致当前正在运行的其他网址失败。最好的办法是记录正在创建的URL,并直观地检查那些失败的URL。