1

I want to make a batch request getting campaigns for a specific ad account. I created a simple code based on this issue 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:

    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))

How can this code optimized by not using global arrays and how to execute without sleep statement and why it is needed sleep?

0 Answers0