async def run(num): tasks = [] # Semaphore, 相当于基于服务器的处理速度和测试客户端的硬件条件,一批批的发 # 直至发送完全部(下面定义的number/num) sem = asyncio.Semaphore(2000) # 创建session,且对本地的TCP连接不做限制limit=0 # 超时时间指定 # total:全部请求最终完成时间 # connect: aiohttp从本机连接池里取出一个将要进行的请求的时间 # sock_connect:单个请求连接到服务器的时间 # sock_read:单个请求从服务器返回的时间 import aiohttp # timeout = aiohttp.ClientTimeout(total=300, connect=60, sock_connect=60, sock_read=60) async with ClientSession(connector=TCPConnector(limit=0)) as session: while True: cookie_jar = PushTool.get_cookies() for i in range(0, num): # 如果是分批的发,就使用并传递Semaphore task = asyncio.ensure_future( bound_register(sem=sem, session=session, cookie_jia=cookie_jar)) tasks.append(task) responses = asyncio.gather(*tasks) await responses
import requests from tools.push_tools import PushTool from urllib import parse success_code = 0 fail_code = 0 server = PushTool.https_target() cookie = PushTool.get_cookies() def https_push(domain): global success_code global fail_code url = '' while True: try: r = PushTool.rand_all(domain) i = PushTool.rand_all(domain) headers = { 'User-Agent': PushTool.user_agent(), 'Referer': r, 'Accept': '*/*', 'Connection': 'keep-alive', 'Host': 'sp0.baidu.com', } conn = requests.Session() conn.headers = headers # print(headers) # 将cookiesJar赋值给会话 cookiesJar = requests.utils.cookiejar_from_dict(cookie, cookiejar=None, overwrite=True) conn.cookies = cookiesJar