1. 语言: python
2. 框架: tornado+gevent 。。我这里是把 tornado 当 flask 来用的
3. 在对于路由 url_pathA的处理里面:我需要向 根据参数来决定 向 urlA 还是 urlB 请求,再根据请求结果响应.设置了超时为 1s
4. 对于 url_pathA,supervisor 起两个进程来处理
现有遇到的问题是 urlA 没有响应,导致只有超时响应。。 而现在其他请求( handler 不是请求 urlA 的请求)也没有响应了,我知道的原因是因为urlA导致的,把请求要urlA的请求干掉响应就正常了,但是这不解决办法,我想知道 这种问题应该怎么解决?
1
laball 2017-03-28 21:26:00 +08:00
处理多个请求的时候,应该是并行的啊,你这个怎么感觉成了串行的了。
|
2
chenqh OP @laball 什么意思 ?我的意思对于接口 A ,只有两个进程来响应,因为一部分请求需要 1S 来响应,导致其他请求在排队,这种问题应该怎么解决呢?
|
3
lovedboy 2017-03-28 21:40:00 +08:00
打 patch 生效了么?用了阻塞的 C 库?
|
7
HFcbyqP0iVO5KM05 2017-03-28 22:46:55 +08:00 via Android
不要用 requests ,用 tornado 自己的 AsyncHttpClient 。
不用异步 ORM 不代表完全不能用异步,如果数据库查询成了瓶颈,那就要优化数据库。但你这里很明显是 requests 网络请求阻塞了线程啦。 |