Python asyncio.as_completed() Examples
The following are 30
code examples of asyncio.as_completed().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
asyncio
, or try the search function
.
Example #1
Source File: FDB.py From webbies with MIT License | 6 votes |
def run(self,queue): self.start_time = datetime.now() for _ in range(self.NOT_FOUND_ATTEMPTS): for ext in self.extensions: uri = (random_nstring(20)+ext).strip() success = yield from self.not_found_probe(uri) if not success: self.terminalw.print_error("404 detection failed") self.save_output() return -1 count = 0 total = len(queue) for subset in grouper(10000,queue): if subset: coros = [] for x in subset: if x: coros.append(asyncio.Task(self.probe(x),loop=self.loop)) for f in self.pb.tqdm(asyncio.as_completed(coros),start=count,total=total,desc=self.host.geturl(),miniters=10): yield from f count += len(coros) self.save_output() self.end()
Example #2
Source File: test_tasks.py From ironpython3 with Apache License 2.0 | 6 votes |
def test_as_completed_concurrent(self): def gen(): when = yield self.assertAlmostEqual(0.05, when) when = yield 0 self.assertAlmostEqual(0.05, when) yield 0.05 loop = self.new_test_loop(gen) a = asyncio.sleep(0.05, 'a', loop=loop) b = asyncio.sleep(0.05, 'b', loop=loop) fs = {a, b} futs = list(asyncio.as_completed(fs, loop=loop)) self.assertEqual(len(futs), 2) waiter = asyncio.wait(futs, loop=loop) done, pending = loop.run_until_complete(waiter) self.assertEqual(set(f.result() for f in done), {'a', 'b'})
Example #3
Source File: test_tasks.py From ironpython3 with Apache License 2.0 | 6 votes |
def test_as_completed_reverse_wait(self): def gen(): yield 0 yield 0.05 yield 0 loop = self.new_test_loop(gen) a = asyncio.sleep(0.05, 'a', loop=loop) b = asyncio.sleep(0.10, 'b', loop=loop) fs = {a, b} futs = list(asyncio.as_completed(fs, loop=loop)) self.assertEqual(len(futs), 2) x = loop.run_until_complete(futs[1]) self.assertEqual(x, 'a') self.assertAlmostEqual(0.05, loop.time()) loop.advance_time(0.05) y = loop.run_until_complete(futs[0]) self.assertEqual(y, 'b') self.assertAlmostEqual(0.10, loop.time())
Example #4
Source File: export.py From slack-emojinator with MIT License | 6 votes |
def main(): args = _argparse() if not os.path.exists(args.directory): os.makedirs(args.directory) base_url = BASE_URL.format(team_name=args.team_name) async with _async_session(args.cookie) as session: token = await _fetch_api_token(session, base_url) emojis = await _determine_all_emoji_urls(session, base_url, token) if len(emojis) == 0: raise Exception('Failed to find any custom emoji') function_http_get = concurrent_http_get(args.concurrent_requests, session) for future in asyncio.as_completed([function_http_get(emoji) for emoji in emojis]): emoji, data = await future save_to_file(data, emoji, args.directory) logger.info(f"Exported {len(emojis)} custom emoji to directory '{args.directory}'")
Example #5
Source File: dispatchers.py From loafer with MIT License | 6 votes |
def _dispatch_tasks(self): provider_messages_tasks = [ self._get_route_messages(route) for route in self.routes ] process_messages_tasks = [] for provider_task in asyncio.as_completed(provider_messages_tasks): messages, route = await provider_task process_messages_tasks += [ self._process_message(message, route) for message in messages ] if not process_messages_tasks: return await asyncio.gather(*process_messages_tasks)
Example #6
Source File: aio_org_wide_clients_v0.py From dashboard-api-python with MIT License | 6 votes |
def main(): # Instantiate a Meraki dashboard API session # NOTE: you have to use "async with" so that the session will be closed correctly at the end of the usage async with meraki.aio.AsyncDashboardAPI( api_key, base_url="https://api.meraki.com/api/v0", log_file_prefix=__file__[:-3], print_console=False, ) as aiomeraki: # Get list of organizations to which API key has access organizations = await aiomeraki.organizations.getOrganizations() # create a list of all organizations so we can call them all concurrently organizationTasks = [listOrganization(aiomeraki, org) for org in organizations] for task in asyncio.as_completed(organizationTasks): # as_completed returns an iterator, so we just have to await the iterator and not call it organizationName = await task print(f"finished organization: {organizationName}") print("Script complete!")
Example #7
Source File: test_tasks.py From ironpython3 with Apache License 2.0 | 6 votes |
def test_as_completed_with_unused_timeout(self): def gen(): yield yield 0 yield 0.01 loop = self.new_test_loop(gen) a = asyncio.sleep(0.01, 'a', loop=loop) @asyncio.coroutine def foo(): for f in asyncio.as_completed([a], timeout=1, loop=loop): v = yield from f self.assertEqual(v, 'a') loop.run_until_complete(asyncio.Task(foo(), loop=loop))
Example #8
Source File: sample06.py From core-python with Apache License 2.0 | 6 votes |
def main(): coroutine1 = do_some_work(1) coroutine2 = do_some_work(2) coroutine3 = do_some_work(4) tasks = [ asyncio.ensure_future(coroutine1), asyncio.ensure_future(coroutine2), asyncio.ensure_future(coroutine3) ] return await asyncio.gather(*tasks) # # 这里使用await等待另一个或多个协程运行完 # dones, pendings = await asyncio.wait(tasks) # for task in dones: # print("Task ret:", task.result()) # results = await asyncio.gather(*tasks) # for result in results: # print("Task ret:",result) # for task in asyncio.as_completed(tasks): # result = await task # print("Task ret: {}".format(result))
Example #9
Source File: aio_org_wide_clients_v1.py From dashboard-api-python with MIT License | 6 votes |
def main(): # Instantiate a Meraki dashboard API session # NOTE: you have to use "async with" so that the session will be closed correctly at the end of the usage async with meraki.aio.AsyncDashboardAPI( api_key, base_url="https://api.meraki.com/api/v1", log_file_prefix=__file__[:-3], print_console=False, ) as aiomeraki: # Get list of organizations to which API key has access organizations = await aiomeraki.organizations.getOrganizations() # create a list of all organizations so we can call them all concurrently organizationTasks = [listOrganization(aiomeraki, org) for org in organizations] for task in asyncio.as_completed(organizationTasks): # as_completed returns an iterator, so we just have to await the iterator and not call it organizationName = await task print(f"finished organization: {organizationName}") print("Script complete!")
Example #10
Source File: test_tasks.py From Project-New-Reign---Nemesis-Main with GNU General Public License v3.0 | 6 votes |
def test_as_completed_reverse_wait(self): def gen(): yield 0 yield 0.05 yield 0 loop = self.new_test_loop(gen) a = asyncio.sleep(0.05, 'a', loop=loop) b = asyncio.sleep(0.10, 'b', loop=loop) fs = {a, b} futs = list(asyncio.as_completed(fs, loop=loop)) self.assertEqual(len(futs), 2) x = loop.run_until_complete(futs[1]) self.assertEqual(x, 'a') self.assertAlmostEqual(0.05, loop.time()) loop.advance_time(0.05) y = loop.run_until_complete(futs[0]) self.assertEqual(y, 'b') self.assertAlmostEqual(0.10, loop.time())
Example #11
Source File: test_tasks.py From Project-New-Reign---Nemesis-Main with GNU General Public License v3.0 | 6 votes |
def test_as_completed_concurrent(self): def gen(): when = yield self.assertAlmostEqual(0.05, when) when = yield 0 self.assertAlmostEqual(0.05, when) yield 0.05 loop = self.new_test_loop(gen) a = asyncio.sleep(0.05, 'a', loop=loop) b = asyncio.sleep(0.05, 'b', loop=loop) fs = {a, b} futs = list(asyncio.as_completed(fs, loop=loop)) self.assertEqual(len(futs), 2) waiter = asyncio.wait(futs, loop=loop) done, pending = loop.run_until_complete(waiter) self.assertEqual(set(f.result() for f in done), {'a', 'b'})
Example #12
Source File: test_tasks.py From Project-New-Reign---Nemesis-Main with GNU General Public License v3.0 | 6 votes |
def test_as_completed_with_unused_timeout(self): def gen(): yield yield 0 yield 0.01 loop = self.new_test_loop(gen) a = asyncio.sleep(0.01, 'a', loop=loop) @asyncio.coroutine def foo(): for f in asyncio.as_completed([a], timeout=1, loop=loop): v = yield from f self.assertEqual(v, 'a') loop.run_until_complete(asyncio.Task(foo(), loop=loop))
Example #13
Source File: utils.py From bioconda-utils with MIT License | 6 votes |
def async_fetch(cls, urls, descs=None, cb=None, datas=None, fds=None): if descs is None: descs = [] if datas is None: datas = [] if fds is None: fds = [] conn = aiohttp.TCPConnector(limit_per_host=cls.CONNECTIONS_PER_HOST) async with aiohttp.ClientSession( connector=conn, headers={'User-Agent': cls.USER_AGENT} ) as session: coros = [ asyncio.ensure_future(cls._async_fetch_one(session, url, desc, cb, data, fd)) for url, desc, data, fd in zip_longest(urls, descs, datas, fds) ] with tqdm(asyncio.as_completed(coros), total=len(coros), desc="Downloading", unit="files") as t: result = [await coro for coro in t] return result
Example #14
Source File: daypicts_asyncio.py From notebooks with MIT License | 6 votes |
def get_picture_urls(dates, verbose=False): semaphore = asyncio.Semaphore(MAX_CONCURRENT_REQUESTS) tasks = [get_picture_url(date, semaphore) for date in dates] urls = [] count = 0 # get results as jobs are done for job in asyncio.as_completed(tasks, timeout=GLOBAL_TIMEOUT): try: url = yield from job except NoPictureForDate as exc: if verbose: print('*** {!r} ***'.format(exc)) continue except aiohttp.ClientResponseError as exc: print('****** {!r} ******'.format(exc)) continue count += 1 if verbose: print(format(count, '3d'), end=' ') print(url.split('/')[-1]) else: print(url) urls.append(url) return urls
Example #15
Source File: test_tasks.py From annotated-py-projects with MIT License | 6 votes |
def test_as_completed_duplicate_coroutines(self): @asyncio.coroutine def coro(s): return s @asyncio.coroutine def runner(): result = [] c = coro('ham') for f in asyncio.as_completed([c, c, coro('spam')], loop=self.loop): result.append((yield from f)) return result fut = asyncio.Task(runner(), loop=self.loop) self.loop.run_until_complete(fut) result = fut.result() self.assertEqual(set(result), {'ham', 'spam'}) self.assertEqual(len(result), 2)
Example #16
Source File: test_tasks.py From annotated-py-projects with MIT License | 6 votes |
def test_as_completed_reverse_wait(self): def gen(): yield 0 yield 0.05 yield 0 loop = self.new_test_loop(gen) a = asyncio.sleep(0.05, 'a', loop=loop) b = asyncio.sleep(0.10, 'b', loop=loop) fs = {a, b} futs = list(asyncio.as_completed(fs, loop=loop)) self.assertEqual(len(futs), 2) x = loop.run_until_complete(futs[1]) self.assertEqual(x, 'a') self.assertAlmostEqual(0.05, loop.time()) loop.advance_time(0.05) y = loop.run_until_complete(futs[0]) self.assertEqual(y, 'b') self.assertAlmostEqual(0.10, loop.time())
Example #17
Source File: test_tasks.py From annotated-py-projects with MIT License | 6 votes |
def test_as_completed_with_unused_timeout(self): def gen(): yield yield 0 yield 0.01 loop = self.new_test_loop(gen) a = asyncio.sleep(0.01, 'a', loop=loop) @asyncio.coroutine def foo(): for f in asyncio.as_completed([a], timeout=1, loop=loop): v = yield from f self.assertEqual(v, 'a') loop.run_until_complete(asyncio.Task(foo(), loop=loop))
Example #18
Source File: cancel_token.py From protoactor-python with Apache License 2.0 | 6 votes |
def wait(self, timeout: float = None) -> None: if self.triggered_token is not None: return futures = [asyncio.ensure_future(self._triggered.wait(), loop=self.loop)] for token in self._chain: futures.append(asyncio.ensure_future(token.wait(), loop=self.loop)) if timeout is not None: futures.append(asyncio.ensure_future(asyncio.sleep(timeout), loop=self.loop)) def cancel_not_done(fut: 'asyncio.Future[None]') -> None: for future in futures: if not future.done(): future.cancel() async def _wait_for_first(futures: Sequence[Awaitable[Any]]) -> None: for future in asyncio.as_completed(futures): await cast(Awaitable[Any], future) return fut = asyncio.ensure_future(_wait_for_first(futures), loop=self.loop) fut.add_done_callback(cancel_not_done) await fut
Example #19
Source File: fuzz_as_completed.py From annotated-py-projects with MIT License | 6 votes |
def watcher(tasks,delay=False): res = [] for t in asyncio.as_completed(tasks): r = yield from t res.append(r) if delay: # simulate processing delay process_time = random.random() / 10 yield from asyncio.sleep(process_time) #print(res) #assert(sorted(res) == res) if sorted(res) != res: print('FAIL', res) print('------------') else: print('.', end='') sys.stdout.flush()
Example #20
Source File: test_tasks.py From Fluid-Designer with GNU General Public License v3.0 | 6 votes |
def test_as_completed_with_unused_timeout(self): def gen(): yield yield 0 yield 0.01 loop = self.new_test_loop(gen) a = asyncio.sleep(0.01, 'a', loop=loop) @asyncio.coroutine def foo(): for f in asyncio.as_completed([a], timeout=1, loop=loop): v = yield from f self.assertEqual(v, 'a') loop.run_until_complete(asyncio.Task(foo(), loop=loop))
Example #21
Source File: test_tasks.py From Fluid-Designer with GNU General Public License v3.0 | 6 votes |
def test_as_completed_reverse_wait(self): def gen(): yield 0 yield 0.05 yield 0 loop = self.new_test_loop(gen) a = asyncio.sleep(0.05, 'a', loop=loop) b = asyncio.sleep(0.10, 'b', loop=loop) fs = {a, b} futs = list(asyncio.as_completed(fs, loop=loop)) self.assertEqual(len(futs), 2) x = loop.run_until_complete(futs[1]) self.assertEqual(x, 'a') self.assertAlmostEqual(0.05, loop.time()) loop.advance_time(0.05) y = loop.run_until_complete(futs[0]) self.assertEqual(y, 'b') self.assertAlmostEqual(0.10, loop.time())
Example #22
Source File: test_tasks.py From Fluid-Designer with GNU General Public License v3.0 | 6 votes |
def test_as_completed_concurrent(self): def gen(): when = yield self.assertAlmostEqual(0.05, when) when = yield 0 self.assertAlmostEqual(0.05, when) yield 0.05 loop = self.new_test_loop(gen) a = asyncio.sleep(0.05, 'a', loop=loop) b = asyncio.sleep(0.05, 'b', loop=loop) fs = {a, b} futs = list(asyncio.as_completed(fs, loop=loop)) self.assertEqual(len(futs), 2) waiter = asyncio.wait(futs, loop=loop) done, pending = loop.run_until_complete(waiter) self.assertEqual(set(f.result() for f in done), {'a', 'b'})
Example #23
Source File: backup_configs.py From automation-scripts with MIT License | 6 votes |
def make_calls(dashboard, calls): global COMPLETED_OPERATIONS, DEVICES, NETWORKS, TEMPLATES tasks = [async_call(dashboard, call) for call in calls] for task in asyncio.as_completed(tasks): results = await task if results: operation = results['operation'] response = results['response'] file_name = results['file_name'] file_path = results['file_path'] save_data(file_name, response, file_path) # Update global variables COMPLETED_OPERATIONS.add(operation) if operation == 'getOrganizationNetworks': NETWORKS = response elif operation == 'getOrganizationConfigTemplates': TEMPLATES = response elif operation == 'getOrganizationDevices': DEVICES = response # Backup configuration for organization
Example #24
Source File: api.py From ProxyBroker with Apache License 2.0 | 5 votes |
def _grab(self, types=None, check=False): def _get_tasks(by=MAX_CONCURRENT_PROVIDERS): providers = [ pr for pr in self._providers if not types or not pr.proto or bool(pr.proto & types.keys()) ] while providers: tasks = [ asyncio.ensure_future(pr.get_proxies()) for pr in providers[:by] ] del providers[:by] self._all_tasks.extend(tasks) yield tasks log.debug('Start grabbing proxies') while True: for tasks in _get_tasks(): for task in asyncio.as_completed(tasks): proxies = await task for proxy in proxies: await self._handle(proxy, check=check) log.debug('Grab cycle is complete') if self._server: log.debug('fall asleep for %d seconds' % GRAB_PAUSE) await asyncio.sleep(GRAB_PAUSE) log.debug('awaked') else: break await self._on_check.join() self._done()
Example #25
Source File: flags3_asyncio.py From notebooks with MIT License | 5 votes |
def downloader_coro(cc_list, base_url, verbose, concur_req): counter = collections.Counter() semaphore = asyncio.Semaphore(concur_req) to_do = [download_one(cc, base_url, semaphore, verbose) for cc in sorted(cc_list)] to_do_iter = asyncio.as_completed(to_do) if not verbose: to_do_iter = tqdm.tqdm(to_do_iter, total=len(cc_list)) for future in to_do_iter: try: res = yield from future except FetchError as exc: country_code = exc.country_code try: error_msg = exc.__cause__.args[0] except IndexError: error_msg = exc.__cause__.__class__.__name__ if verbose and error_msg: msg = '*** Error for {}: {}' print(msg.format(country_code, error_msg)) status = HTTPStatus.error else: status = res.status counter[status] += 1 return counter
Example #26
Source File: flags2_await.py From notebooks with MIT License | 5 votes |
def downloader_coro(cc_list, base_url, verbose, concur_req): # <1> counter = collections.Counter() semaphore = asyncio.Semaphore(concur_req) # <2> to_do = [download_one(cc, base_url, semaphore, verbose) for cc in sorted(cc_list)] # <3> to_do_iter = asyncio.as_completed(to_do) # <4> if not verbose: to_do_iter = tqdm.tqdm(to_do_iter, total=len(cc_list)) # <5> for future in to_do_iter: # <6> try: res = await future # <7> except FetchError as exc: # <8> country_code = exc.country_code # <9> try: error_msg = exc.__cause__.args[0] # <10> except IndexError: error_msg = exc.__cause__.__class__.__name__ # <11> if verbose and error_msg: msg = '*** Error for {}: {}' print(msg.format(country_code, error_msg)) status = HTTPStatus.error else: status = res.status counter[status] += 1 # <12> return counter # <13>
Example #27
Source File: proxy_server.py From ProxyBroker with Apache License 2.0 | 5 votes |
def get_pages(urls, proxy_url): tasks = [fetch(url, proxy_url) for url in urls] for task in asyncio.as_completed(tasks): url, content = await task print('%s\nDone!\nURL: %s;\nContent: %s' % ('-' * 20, url, content))
Example #28
Source File: flags2_asyncio.py From notebooks with MIT License | 5 votes |
def downloader_coro(cc_list, base_url, verbose, concur_req): # <1> counter = collections.Counter() semaphore = asyncio.Semaphore(concur_req) # <2> to_do = [download_one(cc, base_url, semaphore, verbose) for cc in sorted(cc_list)] # <3> to_do_iter = asyncio.as_completed(to_do) # <4> if not verbose: to_do_iter = tqdm.tqdm(to_do_iter, total=len(cc_list)) # <5> for future in to_do_iter: # <6> try: res = yield from future # <7> except FetchError as exc: # <8> country_code = exc.country_code # <9> try: error_msg = exc.__cause__.args[0] # <10> except IndexError: error_msg = exc.__cause__.__class__.__name__ # <11> if verbose and error_msg: msg = '*** Error for {}: {}' print(msg.format(country_code, error_msg)) status = HTTPStatus.error else: status = res.status counter[status] += 1 # <12> return counter # <13>
Example #29
Source File: flags2_asyncio_executor.py From notebooks with MIT License | 5 votes |
def downloader_coro(cc_list, base_url, verbose, concur_req): counter = collections.Counter() semaphore = asyncio.Semaphore(concur_req) to_do = [download_one(cc, base_url, semaphore, verbose) for cc in sorted(cc_list)] to_do_iter = asyncio.as_completed(to_do) if not verbose: to_do_iter = tqdm.tqdm(to_do_iter, total=len(cc_list)) for future in to_do_iter: try: res = yield from future except FetchError as exc: country_code = exc.country_code try: error_msg = exc.__cause__.args[0] except IndexError: error_msg = exc.__cause__.__class__.__name__ if verbose and error_msg: msg = '*** Error for {}: {}' print(msg.format(country_code, error_msg)) status = HTTPStatus.error else: status = res.status counter[status] += 1 return counter
Example #30
Source File: test_tasks.py From annotated-py-projects with MIT License | 5 votes |
def test_as_completed_with_timeout(self): def gen(): yield yield 0 yield 0 yield 0.1 loop = self.new_test_loop(gen) a = asyncio.sleep(0.1, 'a', loop=loop) b = asyncio.sleep(0.15, 'b', loop=loop) @asyncio.coroutine def foo(): values = [] for f in asyncio.as_completed([a, b], timeout=0.12, loop=loop): if values: loop.advance_time(0.02) try: v = yield from f values.append((1, v)) except asyncio.TimeoutError as exc: values.append((2, exc)) return values res = loop.run_until_complete(asyncio.Task(foo(), loop=loop)) self.assertEqual(len(res), 2, res) self.assertEqual(res[0], (1, 'a')) self.assertEqual(res[1][0], 2) self.assertIsInstance(res[1][1], asyncio.TimeoutError) self.assertAlmostEqual(0.12, loop.time()) # move forward to close generator loop.advance_time(10) loop.run_until_complete(asyncio.wait([a, b], loop=loop))