分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 代码编程

aiohttp/asyncio 多次请求

发布时间:2023-09-06 01:53责任编辑:胡小海关键词:http
#!/usr/bin/env python# -*- coding: utf-8 -*-__author__ = "Daniel Altiparmak (sixfinger78@gmail.com)"__copyright__ = "Copyright (C) 2015 Daniel Altiparmak"__license__ = "GPL 3.0"import asyncioimport aiohttpimport tqdmimport stringimport random# get content and write it to filedef write_to_file(filename, content): ???f = open(filename, ‘wb‘) ???f.write(content) ???f.close()# a helper coroutine to perform GET requests:@asyncio.coroutinedef get(*args, **kwargs): ???response = yield from aiohttp.request(‘GET‘, *args, **kwargs) ???return (yield from response.read_and_close())@asyncio.coroutinedef download_file(url): ???# this routine is protected by a semaphore ???with (yield from r_semaphore): ???????content = yield from asyncio.async(get(url)) ???????# create random filename ???????length = 10 ???????file_string = ‘‘.join(random.choice( ???????????string.ascii_lowercase + string.digits) for _ in range(length) ?????????????????????????????) ???????filename = ‘{}.png‘.format(file_string) ???????write_to_file(filename, content)‘‘‘make nice progressbarinstall it by using `pip install tqdm`‘‘‘@asyncio.coroutinedef wait_with_progressbar(coros): ???for f in tqdm.tqdm(asyncio.as_completed(coros), total=len(coros)): ???????yield from fimages = [‘http://lorempixel.com/1920/1920/‘ for i in range(100)]# avoid to many requests(coroutines) the same time.# limit them by setting semaphores (simultaneous requests)r_semaphore = asyncio.Semaphore(10)coroutines = [download_file(url) for url in images]eloop = asyncio.get_event_loop()#eloop.run_until_complete(asyncio.wait(coroutines))eloop.run_until_complete(wait_with_progressbar(coroutines))eloop.close()

  

aiohttp/asyncio 多次请求

原文地址:https://www.cnblogs.com/c-x-a/p/9025588.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved