为什么我使用AsyncHTTPClient超时?

时间:2017-07-24 06:43:46

标签: timeout tornado asynchttpclient

@tornado.web.authenticated
@tornado.web.asynchronous
@tornado.gen.coroutine
def post(self):

    try:
        files_body = self.request.files['file']
    except:
        error_msg = u"failed to upload file"
        error_msg = self.handle_error(error_msg)
        self.finish(dict(is_succ=False, error_msg=error_msg))
        return

    file_ = files_body[0]
    filename = file_['filename']

    # asynchronous request, obtain OCR info
    files = [('image', filename, file_['body'])]
    fields = (('api_key', config.OCR_API_KEY), ('api_secret', config.OCR_API_SECRET))
    content_type, body = encode_multipart_formdata(fields, files)

    headers = {"Content-Type": content_type, 'content-length': str(len(body))}

    request = tornado.httpclient.HTTPRequest(config.OCR_HOST, method="POST", headers=headers, body=body,
                                             validate_cert=False, request_timeout = 30)

    try:
        response = yield tornado.httpclient.AsyncHTTPClient().fetch(request)
    except Exception, e:
        logging.error(u'orc timeout {}'.format(e))
        error_msg = u"OCR timeout"
        error_msg = self.handle_error(error_msg)
        self.finish(dict(is_succ=False, error_msg=error_msg))
        return
    if not response.error and response.body:
        data = json.loads(response.body)
        self.extra_info(data)
        result = dict(is_succ=True, error_msg=u"", data=data)
    else:
        result = dict(is_succ=False, error_msg=u"request timeout", data={})
    self.finish(result)

如图所示,我想编写一个api来处理id-card图片上传,并向第三方界面发送请求以获取id-card的信息。

这个api可以在我的电脑上运行良好,但它在测试服务器上超时。我无法弄清楚问题出在哪里。

0 个答案:

没有答案