Mad*_*ddy 10 python celery eventlet python-requests grequests
我requests
在芹菜中使用Python workers
来进行大量(~10 /秒)API调用(包括GET,POST,PUT,DELETE).每个请求大约需要5到10秒才能完成.
我尝试在eventlet
池中运行芹菜工作者,并发1000次.
由于requests
是阻塞进程,因此每个并发连接都在等待一个请求.
我如何进行requests
异步?
tem*_*oto 15
使用eventlet monkey补丁使任何纯python库无阻塞.
补丁单库
# import requests # instead do this:
import eventlet
requests = eventlet.import_patched('requests')
Run Code Online (Sandbox Code Playgroud)
一切都好
import eventlet
eventlet.monkey_patch() # must execute as early as possible
...
# everything is non-blocking now:
import requests, amqp, memcache, paramiko, redis
Run Code Online (Sandbox Code Playgroud)更新:猴子修补请求库存在已知问题.如果你得到:
ImportError: cannot import name utils
Run Code Online (Sandbox Code Playgroud)
,然后修改导入行
requests = eventlet.import_patched('requests.__init__')
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5554 次 |
最近记录: |