def request(params): _, name = params kv = "name=%s" % (name, ) url = get_req_url(options, kv) status = requests.get(url) print("pid: %s, request url: %s, status: %s" % (os.getpid(), url, status.reason)) return status
def loop_request_wrapper(params): start = datetime.datetime.now() urls = [ get_req_url(options, "name=".format(params[1])) for _ in range(options.task_num) ] tasks = [asyncio.ensure_future(request(url)) for url in urls] loop = asyncio.get_event_loop() loop.run_until_complete(asyncio.wait(tasks)) end = datetime.datetime.now() print("visit %s" % (urls)) print("my pid: %s, parent pid: %s, start at %s, end at %s" % (os.getpid(), os.getppid(), start, end)) print('-' * 80)
def loop_request_wrapper(params): # print("params:{}".format(params)) my_params = get_my_params(params, os.getpid()) start = datetime.datetime.now() urls = [ get_req_url(options, ("name=%s" % (my_params[i][1], ))) for i in range(len(my_params)) ] tasks = [asyncio.ensure_future(request(url)) for url in urls] loop = asyncio.get_event_loop() loop.run_until_complete(asyncio.wait(tasks)) end = datetime.datetime.now() print('-' * 80) print("my pid: %s, parent pid: %s, start at %s, end at %s" % (os.getpid(), os.getppid(), start, end))
async def run(): semaphore = asyncio.Semaphore(options.con_num) # 限制并发量为每次con_num个协程 tasks = [ hello(get_req_url(options), semaphore) for _ in range(options.task_num) ] # 总共task_num个任务 await asyncio.wait(tasks)
define("ip", type=str, default="127.0.0.1") define("port", type=int, default=8888) define("api_name", type=str, default="/say/hello") define("params", type=str, default="name=Lucy") define("task_num", type=int, default=10) parse_command_line() async def request(url): session = aiohttp.ClientSession() response = await session.get(url) # result, status = await response.text() result, status = await response.text(), response.status await session.close() return result, status if __name__ == "__main__": print(datetime.datetime.now()) tasks = [ asyncio.ensure_future(request(get_req_url(options))) for _ in range(options.task_num) ] loop = asyncio.get_event_loop() loop.run_until_complete(asyncio.wait(tasks)) print(datetime.datetime.now())
define("port", type=int, default=8888) define("api_name", type=str, default="/say/hello") define("params", type=str, default="name=Lucy") parse_command_line() async def request(url): print("request url %s" % (url,)) status = requests.get(url) return status def callback(task): print("in callback, status:", task.result()) if __name__ == "__main__": print(datetime.datetime.now()) coroutine = request(get_req_url(options)) task = asyncio.ensure_future(coroutine) # 当 coroutine 对象执行完毕之后,就去执行声明的 callback() 方法 task.add_done_callback(callback) # print("Task:", task) loop = asyncio.get_event_loop() loop.run_until_complete(task) # print("Task:", task) print(datetime.datetime.now())