code: def async_iter(func, args_iter, **kwargs):
      
      iter_count = len(args_iter)
      iter_group = uuid()[1]
      # clean up the kwargs
      options = kwargs.get('q_options', kwargs)
      options.pop('hook', None)
      options['broker'] = options.get('broker', get_broker())
      options['group'] = iter_group
      options['iter_count'] = iter_count
      if options.get('cached', None):
          options['iter_cached'] = options['cached']
      options['cached'] = True
      # save the original arguments
      broker = options['broker']
      broker.cache.set('{}:{}:args'.format(broker.list_key, iter_group), SignedPackage.dumps(args_iter))
      for args in args_iter:
          if not isinstance(args, tuple):
              args = (args,)
          async_task(func, *args, **options)
      return iter_group
docs: enqueues a function with iterable arguments