[转]菜鸟解决方案--绑定域名后GAppProxy出现404错

前两天Google的*.appspot.com被和谐后,广大墙友的GappProxy就用不了了,不过通过自己绑定域名的GAE却可以正常访问,所以我想,通过自定绑定的域名来使用GAppProxy应该也是可以的,待我使用最新版的GAppProxy2时,却无情的收到404错误:

Error response

Error code 404.

Message: Local proxy error, Fetchserver not found at the URL you specified, please check it..

Error code explanation: 404 = Nothing matches the given URI.

但是从理论上来说使用自己的域名和使用appspot.com,结果应该都是一样的,不过这毕竟是程序的返回结果,所以我决定看能不能从代码中找到解决方法(连Python语法都不熟的俺去从代码里找问题根源,是不是有点自不量力了~_~,不过你别喷俺,这也是一种学习方法不是?)...

... ...

嘿,功夫不负有心人哈,还真让俺逮着了~

在proxy.py的199行处有这么一段代码:

if local_proxy != "":
proxy_handler = urllib2.ProxyHandler({"http": local_proxy})
else:
proxy_handler = urllib2.ProxyHandler(google_proxy)
opener = urllib2.build_opener(proxy_handler)
# set the opener as the default opener
urllib2.install_opener(opener)

而且之后就是"resp = urllib2.urlopen(request, params)"进行打开连接,也正是在这一步抛出了404异常,当然,凭这点代码还不足判断出错误的根源来,所以我只能一步步的查找这些代码的句义(菜鸟的无奈~).

最后通过ProxyHandler这个方法名,及local_proxy这个从配置文件中读取出来的变量,猜想ProxyHandler这个方法是不是应该是设置代理的意思?Google一下,果真是这么个方法,然后又通过测试google_proxy变量,在这一步时:

 google_proxy={'http': 'www.google.cn:80'}

这就让我纳闷了,这个代理地址是在common.py里设置的

GOOGLE_PROXY = 'www.google.cn:80'

但是为什么把google作为代理地址就不得而知了.

知道了错误原因,解决方法就多了...我的方法是去掉else里的代码:

if local_proxy != "":
proxy_handler = urllib2.ProxyHandler({"http": local_proxy})
opener = urllib2.build_opener(proxy_handler)
# set the opener as the default opener
urllib2.install_opener(opener)

 

即未配置代理时,不运行这几行代码.

保存,运行...一切OK!

下面是我打包exe后的proxy.exe,你若使用localproxy-2.0.0-win又不想自己打包,就下载这个吧:

http://commondatastorage.googleapis.com/oncereply/myproxy.zip

 

本人Python菜鸟,此方法只是临时解决,期待GAppProxy给出更完美的方法.


转自:答复哈

posted on 2011-12-22 22:41  小橋流水  阅读(39953)  评论(0编辑  收藏  举报

导航