由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 请教python高手异步编程的问题
相关主题
Python Concurrency 主流是用啥node.js不可放弃
为啥大家都比较python的web framework呢coroutine comes to Java - Project Loom
为什么我认为 Python 3 没有前途?(zz)Typescript是不是实际上反 functional programming 的?
Anyone attended Pycon 2013 last week?C++ 有没有像go routine/channel 一样的库/框架?
这次node把python也给干了node.js错误求指点
vert.x vs tornado? : to mr.zhao问一个同步问题
难得好文,Linkedin如何用Node beat Python,Ruby,Javajavascript: 有没有办法同时发多个http request?
求推荐python based framework好了,现在可以发布我的发明之一了,物联网App Engine
相关话题的讨论汇总
话题: requests话题: false话题: api话题: python话题: blocking
进入Programming版参与讨论
1 (共1页)
d********g
发帖数: 7458
1
我们的网站后台遇到这么个问题,大概可以抽象成这样子:
import requests
for i in xrange(10):
response[i] = requests.post(API_URL,data={func(i)},timeout=30, verify=False);
# next step, processing response[]
API_URL是国内的API接口,因为连接速度比较慢,所以timeout设成了30来确保连通率。
目前的问题是10次循环下来,因为是阻塞式的,时间会拖得比较长。假设每次requests
平均需要15秒,一共就要150秒。
请问有什么异步的办法,能够同时并发这10次连接请求,然后等所有的response[i]全
收集齐了再做下一步?
c***d
发帖数: 996
2
pycurl curlmulti?

False);
率。
requests

【在 d********g 的大作中提到】
: 我们的网站后台遇到这么个问题,大概可以抽象成这样子:
: import requests
: for i in xrange(10):
: response[i] = requests.post(API_URL,data={func(i)},timeout=30, verify=False);
: # next step, processing response[]
: API_URL是国内的API接口,因为连接速度比较慢,所以timeout设成了30来确保连通率。
: 目前的问题是10次循环下来,因为是阻塞式的,时间会拖得比较长。假设每次requests
: 平均需要15秒,一共就要150秒。
: 请问有什么异步的办法,能够同时并发这10次连接请求,然后等所有的response[i]全
: 收集齐了再做下一步?

d******e
发帖数: 2265
3
gevent

False);
率。
requests

【在 d********g 的大作中提到】
: 我们的网站后台遇到这么个问题,大概可以抽象成这样子:
: import requests
: for i in xrange(10):
: response[i] = requests.post(API_URL,data={func(i)},timeout=30, verify=False);
: # next step, processing response[]
: API_URL是国内的API接口,因为连接速度比较慢,所以timeout设成了30来确保连通率。
: 目前的问题是10次循环下来,因为是阻塞式的,时间会拖得比较长。假设每次requests
: 平均需要15秒,一共就要150秒。
: 请问有什么异步的办法,能够同时并发这10次连接请求,然后等所有的response[i]全
: 收集齐了再做下一步?

k****0
发帖数: 7
4
use asyncio (python 3) or trollius (python 2)
call requests using loop.run_in_executor(None, requests.post, ....), which
returns a promise so it is not blocking.
Alternatively you can use grequest (basically requests+gevents), but gevents
will monkey patch all the network modules to make it non-blocking, which
sometimes breaks stuff.
s********k
发帖数: 6180
5
用twsited?或者直接自己写个unblock的coroutine?

False);
率。
requests

【在 d********g 的大作中提到】
: 我们的网站后台遇到这么个问题,大概可以抽象成这样子:
: import requests
: for i in xrange(10):
: response[i] = requests.post(API_URL,data={func(i)},timeout=30, verify=False);
: # next step, processing response[]
: API_URL是国内的API接口,因为连接速度比较慢,所以timeout设成了30来确保连通率。
: 目前的问题是10次循环下来,因为是阻塞式的,时间会拖得比较长。假设每次requests
: 平均需要15秒,一共就要150秒。
: 请问有什么异步的办法,能够同时并发这10次连接请求,然后等所有的response[i]全
: 收集齐了再做下一步?

d********g
发帖数: 10550
6
gevent,或者简单点tornado:
http://www.tornadoweb.org/en/stable/gen.html

False);
率。
requests

【在 d********g 的大作中提到】
: 我们的网站后台遇到这么个问题,大概可以抽象成这样子:
: import requests
: for i in xrange(10):
: response[i] = requests.post(API_URL,data={func(i)},timeout=30, verify=False);
: # next step, processing response[]
: API_URL是国内的API接口,因为连接速度比较慢,所以timeout设成了30来确保连通率。
: 目前的问题是10次循环下来,因为是阻塞式的,时间会拖得比较长。假设每次requests
: 平均需要15秒,一共就要150秒。
: 请问有什么异步的办法,能够同时并发这10次连接请求,然后等所有的response[i]全
: 收集齐了再做下一步?

d********g
发帖数: 10550
7
non-blocking的coroutine现成的tornado就有:
http://www.tornadoweb.org/en/stable/gen.html

【在 s********k 的大作中提到】
: 用twsited?或者直接自己写个unblock的coroutine?
:
: False);
: 率。
: requests

1 (共1页)
进入Programming版参与讨论
相关主题
好了,现在可以发布我的发明之一了,物联网App Engine这次node把python也给干了
再次请教个linux组合问题vert.x vs tornado? : to mr.zhao
有大牛可以解释下bloom filter是在什么条件下使用最好难得好文,Linkedin如何用Node beat Python,Ruby,Java
问java applet的问题求推荐python based framework
Python Concurrency 主流是用啥node.js不可放弃
为啥大家都比较python的web framework呢coroutine comes to Java - Project Loom
为什么我认为 Python 3 没有前途?(zz)Typescript是不是实际上反 functional programming 的?
Anyone attended Pycon 2013 last week?C++ 有没有像go routine/channel 一样的库/框架?
相关话题的讨论汇总
话题: requests话题: false话题: api话题: python话题: blocking