我正在尝试在App Engine上的两个页面之间进行简单的http请求/响应通信。这是代码:
class MainHandler(webapp.RequestHandler):
def get(self):
values = {'id' : '9',
'number' : '10001',
'age' : '15828',
'name' : 'Squeak' }
data = urllib.urlencode(values)
request = urllib2.Request("http://localhost:8082/post", data)
response = urllib2.urlopen(request)
content = response.read()
self.response.out.write(content)
class PostHandler(webapp.RequestHandler):
def post(self):
self.response.out.write(str(self.request.get('id')) + '<br>' + str(self.request.get('number')) + '<br>' + str(self.request.get('age')) + '<br>' + self.request.get('name'))
我将这些处理程序分配给'/'和'/ post',结果是我得到一个等待HTTP响应的DeadLineExceedError,我猜这是因为“已建立的连接被主机中的软件中止了机器“[Errno 10053]。我尝试禁用防火墙/防病毒软件,但它仍无法正常工作。显然我是App Engine的新手,但这个东西应该是直截了当的。为什么会这样?我已经有一段时间一直在努力。
答案 0 :(得分:1)
您无法为应用引擎选择要使用的端口(为其提供数据),所以不要尝试这样做。
您是否在已部署的服务器上尝试了此操作?正如评论所指出的,本地和部署的行为可能非常不同,特别是在有多个请求的情况下。
应用引擎上的页面无法相互通信,每次请求完成时都会忘记所有内容。
所以你的代码可能会发生这样的事情:
您发帖子请求。 由于您仍在处理原始获取,因此无法处理该帖子请求。所以帖子排队等到get完成。 get永远不会完成,因为它正在等待帖子完成。
或类似的东西。
如果你用这段代码解释了你想要实现的目标并将其作为一个单独的问题重新提出,那也许会更好。因为没有真正的方法来“修复”这个。