热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Celery+Eventlet+非阻塞请求

如何解决《Celery+Eventlet+非阻塞请求》经验,为你挑选了1个好方法。

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__')


推荐阅读
author-avatar
g37112969
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有