Celery + Eventlet +非阻塞请求

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库无阻塞.

更新:猴子修补请求库存在已知问题.如果你得到:

ImportError: cannot import name utils
Run Code Online (Sandbox Code Playgroud)

,然后修改导入行

requests = eventlet.import_patched('requests.__init__')
Run Code Online (Sandbox Code Playgroud)