title: Python: Facebook Graph API - batch request
body: <p>I want to make a batch request getting campaigns for a specific ad account. I created a simple code based on <a href="https://stackoverflow.com/questions/43232666/facebook-ads-api-batch-requesting-targeting-search">this issue </a>
  but I've used some global arrays and I don't know if time.sleep(2) is necessary for this code. My code is as below:</p>
  
  <pre><code>    from facebookads import FacebookAdsApi
      from facebookads.api import FacebookRequest
      import pandas as pd
      import time
  
  
  
      batch_body_responses = []
      list_of_artists = [1]
  
  
      def success_callback(response):
          try:
              pair = [response.json()['data']]
              next = [response.json()['paging']['next']]
  
              batch_body_responses.append(pair)
              batch_body_responses.append(next)
  
          except IndexError:
              pass
          except UnicodeEncodeError:
              pass
  
  
      def error_callback(response):
          pass 
      def generate_batches(iterable, batch_size_limit):
      # This function can be found in examples/batch_utils.py
      batch = []
  
      for item in iterable:
          if len(batch) == batch_size_limit:
              yield batch
              batch = []
          batch.append(item)
  
      if len(batch):
          yield batch
  
  
  def get_id_list(art_search_list):
  
      batches = []
      your_app_id = '756885'
      your_app_secret = '123456789'
      your_access_token = 'EAA.....'
      api = FacebookAdsApi.init(your_app_id, your_app_secret, your_access_token)
      batch_limit = 25
      for batch in generate_batches(art_search_list, batch_limit):
          next_batch = api.new_batch()
  
          for artt in batch:
  
              requestss = [FacebookRequest(node_id='act_1234/campaigns',method="GET",endpoint="?fields=id,name")]
  
              for req in requestss:
                  next_batch.add_request(req, success_callback, error_callback)
          batches.append(next_batch)
  
  
  
      for batch_request in batches:
          batch_request.execute()
  
          time.sleep(2)
      print(batch_body_responses)
  
  
      return batch_body_responses
  
  df = pd.DataFrame(get_id_list(list_of_artists))
  </code></pre>
  
  <p>How can this code optimized by not using global arrays and how to execute without sleep statement and why it is needed sleep?</p>