【问题标题】:AppEngine urlopen connection aborted [Errno 10053]AppEngine urlopen 连接中止 [Errno 10053]
【发布时间】:2012-12-04 06:39:52
【问题描述】:

我正在尝试在 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' 发生的情况是我得到一个 DeadLineExceedError 等待 HTTP 响应,我猜它被阻止是因为“建立的连接被您主机中的软件中止机器”[Errno 10053]。我尝试禁用防火墙/防病毒软件,但仍然无效。显然我是 App Engine 的新手,但这些东西应该很简单。为什么会这样?我已经为此苦苦挣扎了一段时间。

【问题讨论】:

  • 您可以直接在浏览器中加载这两个网站吗?开发服务器没有线程化,因此请求是按顺序处理的,但我假设您有两个单独的实例在不同的端口上运行?

标签: python google-app-engine http-post urllib2 urllib


【解决方案1】:

一开始您无法为应用引擎选择要使用(提供数据)的端口,所以别再尝试了。

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

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

所以你的代码可能发生的事情是这样的:

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

或者类似的东西。

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

【讨论】:

  • 实际上,您可以使用--port= arg 指定一个端口来侦听开发服务器,这就是我认为问题所涉及的
  • 当然,但我想明确一点。
  • 感谢您的快速回复,对于迟到的接受表示歉意。它可以在部署的服务器上运行,但在本地主机中它永远不会像你说的那样真正完成,因为本地应用程序不是多线程的,我不知道......
猜你喜欢
  • 2011-07-12
  • 1970-01-01
  • 2015-06-25
  • 2013-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多