作者:g37112969 | 来源:互联网 | 2023-05-23 15:54
我requests
在芹菜中使用Python workers
来进行大量(~10 /秒)API调用(包括GET,POST,PUT,DELETE).每个请求大约需要5到10秒才能完成.
我尝试在eventlet
池中运行芹菜工作者,并发1000次.
由于requests
是阻塞进程,因此每个并发连接都在等待一个请求.
我如何进行requests
异步?
1> temoto..:
使用eventlet monkey补丁使任何纯python库无阻塞.
补丁单库
# import requests # instead do this:
import eventlet
requests = eventlet.import_patched('requests')
包erequests和grequests可以被剥离到这两行.
一切都好
import eventlet
eventlet.monkey_patch() # must execute as early as possible
...
# everything is non-blocking now:
import requests, amqp, memcache, paramiko, redis
更新:猴子修补请求库存在已知问题.如果你得到:
ImportError: cannot import name utils
,然后修改导入行
requests = eventlet.import_patched('requests.__init__')