异步协程处理requests阻塞
来源:互联网 发布:纹理过滤 三线性优化 编辑:程序博客网 时间:2024/05/26 08:42
#!//bin/python# -*- coding: UTF-8 -*-'''date : 2017-07-27@author: vassago'''from gevent import monkeymonkey.patch_all()import sysreload(sys)sys.setdefaultencoding('utf-8')import requestsimport timeimport geventfrom gevent import poolimport reimport mathimport pymysqlfrom DBUtils.PooledDB import PooledDB# db ip'''db msg'''# 数据库连接池mysql_db_pool = PooledDB(creator=pymysql, mincached=1, maxcached=2, maxconnections=100, host=base_ip, port=3306, user=base_user, passwd=base_pwd, db=base_db, charset='utf8', use_unicode=False, blocking=True)# target urlURL = ''complete_count = 0# log--from datetime import datetimeimport functoolsfrom collections import defaultdictfunc_count_dict = defaultdict(int)def func_time_logger(fun): if fun.__dict__.get('mioji.aop_utils.logger', False): return fun fun.__dict__['mioji.aop_utils.logger'] = True @functools.wraps(fun) def logging(*args, **kw): func_count_dict[fun.__name__] += 1 begin = datetime.now() result = fun(*args, **kw) end = datetime.now() func_count_dict[fun.__name__] -= 1 print 'func {0}, cost:{1}, ex:{2}'.format(fun.__name__, end - begin , func_count_dict[fun.__name__]) return result return logging# --log# 获得代理@func_time_loggerdef get_PROXY(): # 代理url R = requests.get(url) p = R.content if p.startswith('10.'): # if p.split(':')[0] in SOCKS_PROXY: PROXY = { 'http': 'socks5://' + p, 'https': 'socks5://' + p } else: self.real_ip = p.split(':')[0] proxy_type = 'http' PROXY = { 'https': 'http://' + p, 'http': 'http://' + p, } return PROXY# requests@func_time_loggerdef get_request_data(x, y): i = 0 while i < 3: try: r = requests.get(URL, proxies=get_PROXY(), timeout=(5, 10)) data = r.content return data except: print 'get error' i += 1 return None# process function@func_time_loggerdef process(a1,a2): get_request_data(x,y) ''' other works ''' global complete_count complete_count += 1 print 'end {0}'.format(sid) print 'complete {0}'.format(complete_count)# 异步协程处理请求量大的需求if __name__ == '__main__': s = time.time() gs = [] for data in data_list: g = execute_pool.apply_async(process, args=(a1, a2,)) gs.append(g) gevent.joinall(gs) print time.time() - s
阅读全文
0 0
- 异步协程处理requests阻塞
- Java 阻塞队列 模拟 异步处理
- 处理大并发之一 对异步非阻塞的理解
- 处理大并发之一 对异步非阻塞的理解
- 处理大并发之一 对异步非阻塞的理解
- 处理大并发之一 对异步非阻塞的理解
- 处理大并发之一 对异步非阻塞的理解
- 高并发异步非阻塞程序消息发送处理机制
- 处理大并发之一 对异步非阻塞的理解
- 处理大并发之一 对异步非阻塞的理解
- 处理大并发之一 对异步非阻塞的理解
- 处理大并发之一 对异步非阻塞的理解
- 处理大并发之一 对异步非阻塞的理解
- 处理大并发之一 对异步非阻塞的理解
- 处理大并发之一 对异步非阻塞的理解
- requests模拟ajax异步请求
- 同步阻塞, 同步非阻塞,异步阻塞,异步非阻塞
- 同步、异步、阻塞、非阻塞
- HDMI之DDC通道
- 添加的依赖
- 多线程
- python: IO操作
- HDU 6170 Two strings
- 异步协程处理requests阻塞
- java提高篇(八)-----详解内部类
- lightoj 1011 Marriage Ceremonies (KM模板题)
- ReactNative-综合案例(01)
- 这个“打工二代”凭啥成了高层次人才
- HDU6165 FFF at Valentine【BFS】
- UVA
- MOB短信验证
- 关于webservice的认识和spring的整合(一)