0

我编写了一个简单的程序来渲染请求国家的国旗 svg 图像。为了确保图像存在,我想先检查一下。但是,我得到以下异常: HTTPException: Deadline exceeded while waiting for HTTP response from URL: http://localhost:8087/images/flag_images/Flag_of_Nepal.svg

无论我为超时设置的值如何,都会发生这种情况。不能用相同的端口调用内部服务器吗?顺便说一句,我正在使用 GAE。

class backbone(Handler):
def render_front(self):
    User_id = self.request.cookies.get('user_id')
    if User_id:
        Valid_User = check_secure_val(User_id)
        if Valid_User:
            p  = UserAccount.get_by_id(int(Valid_User))
            User = p.User
        else:
            User = ""
    else:
        User = ""
    self.render("backbone.html", image = "")


def get(self):
    self.render_front()

def post(self):
    a = self.request.get('country')
    image = self.exists('localhost', 8087, ("/images/flag_images/Flag_of_%s.svg" %a))
    if image:
        self.render('backbone.html', image = '<img src = "/images/flag_images/Flag_of_%s.svg" alt="" width="60" height="45"/>'  % a)    
    else:
        self.render('backbone.html', image = '<img src = "/images/flag_images/NoFlag.svg" alt="" width="60" height="45"/>'  % a)    


def exists(self, site, port, path):
    conn = httplib.HTTPConnection(site, port, timeout= 40)
    conn.request('GET', path)
    response = conn.getresponse()
    conn.close()
    return response.status == 200
4

1 回答 1

0

你不能像 GAE 那样使​​用 localhost。您需要一个外部 URL 引用。如果您尝试从本地计算机获取图像到 GAE,您需要在路由器上打开该端口,查看http://portforward.com/,然后按照从https://www获取的 IP 地址插入您的 IP 地址.google.com/?q=what+is+my+ip作为网址。例如,对我来说,它会是这样的http://67.84.162.157:8000/images/usa.svg

于 2012-11-30T03:22:05.933 回答