0

我正在尝试在 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,我猜它被阻止是因为“建立的连接被主机中的软件中止”[错误号 10053]。我尝试禁用防火墙/防病毒软件,但仍然无法正常工作。显然我是 App Engine 的新手,但这些东西应该很简单。为什么会这样?我已经为此苦苦挣扎了一段时间。

4

1 回答 1

1

一开始您无法为应用引擎选择要使用(提供数据)的端口,因此请忘记尝试。

你有没有在部署的服务器上试过这个?正如评论所指出的,本地和部署的行为可能非常不同,尤其是在有多个请求的情况下。

应用引擎上的页面无法相互通信,每次请求完成时都会忘记一切。

因此,您的代码可能发生的情况是:

你提出一个帖子请求。无法处理该发布请求,因为您仍在处理原始获取。所以帖子会排队,直到获取完成。获取永远不会完成,因为它正在等待帖子完成。

或者类似的东西。

如果您解释了您试图使用此代码实现的目标并将其作为一个单独的问题重新提出,这可能会更好。因为没有真正的方法可以“修复”这个问题。

于 2012-12-04T09:43:30.907 回答