python - tornado框架调用AsyncHTTPClient,出现阻塞并严重延迟的问题?
巴扎黑
巴扎黑 2017-04-18 09:57:20
[Python讨论组]

1,我有用tornado框架搭建了一个web服务对外提供访问,我们暂且叫他A服务,这个A服务实际上就是调用本机的另一个web服务(也是tornado搭建的)我们暂且叫它B服务,如果B服务返回不是200,就调用另一个web服务(也是tornado搭建的)我们暂且叫它C服务,都是本机localhost调用,我发现被调用的B,C服务都很快结束,不到1秒,而A服务这边做的时间计时,发现很慢,达到20秒,请各位帮我看看!

我用的python2.7,tornado3.2

2,以下是代码

@asynchronous
@gen.coroutine
def get(self):
    cost_array=[int(time.time()*1000)]
    result=yield self.callB(q,start_date)
    cost_array.append(int(time.time()*1000))
    if result["code"]!=200:
        result=yield self.callC(q,start_date)
        cost_array.append(int(time.time() * 1000))
        
    self.set_status(result["code"])
    self.write(result["response"])
    
   @gen.coroutine
def callB(self, q, start_date):
    result={
        "code":0,
        "response":{}
    }
    url="http://localhost:8200/*?q=%s&startdate=%s"%(q,start_date)
    request = HTTPRequest(url=url,\
                          method="GET", \
                          follow_redirects=False,\
                          request_timeout=3000)
    sever_response=yield gen.Task(AsyncHTTPClient().fetch,request)

    result["code"]=sever_response.code
    if sever_response.body:
        result["response"]=sever_response.body
    raise gen.Return(result)
    
@gen.coroutine
def callC(self, q, start_date):
    result={
        "code":0,
        "response":{}
    }
    url="http://localhost:8200/*?q=%s&startdate=%s"%(q,start_date)
    request = HTTPRequest(url=url,\
                          method="GET", \
                          follow_redirects=False,\
                          request_timeout=3000)
    sever_response=yield gen.Task(AsyncHTTPClient().fetch,request)

    result["code"]=sever_response.code
    if sever_response.body:
        result["response"]=sever_response.body
    raise gen.Return(result)
    

以上代码执行一段时间还行,过了一段时间后,cost_array数组里面记录的时间戳直接差距的秒数能达到20秒以上,然后服务也没办法对外提供访问了,但进程的cpu和内存占用很小!!访问都是超时了。只能重启服务

巴扎黑
巴扎黑

全部回复(0)
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号