Hello,

Recently my program started running extremely slow and upon further 
investigation found that this '{method 'next_event' of 
'grpc._cython.cygrpc.SegregatedCall' objects}' was taking over 5 seconds 
per call.

I am using all of the latest versions grpc and google-ads packages.

Below is an example of the code that is running and the results from a 
cProfile run:
from google.ads.googleads.client import GoogleAdsClient
from google.ads.googleads.v13.services.services.google_ads_service import 
pagers
import logging

logging.basicConfig(level=logging.INFO, format='[%(asctime)s - 
%(levelname)s] %(message).5000s')
logging.getLogger('google.ads.googleads.client').setLevel(logging.INFO)

client = GoogleAdsClient.load_from_storage("google-ads.yaml")
google_ads_service = client.get_service("GoogleAdsService", version='v13')

class GoogleQuery:
"""A class to query Google Ads API

Attributes:
client: An initialized GoogleAdsClient instance.
mcc_id: The Google Ads MCC ID
search_accounts_query: A query to return all search accounts
display_accounts_query: A query to return all display accounts

Methods:
get_existing_search_accounts: Returns a dictionary of existing search 
accounts
get_existing_display_accounts: Returns a dictionary of existing display 
accounts
run_gaql_query: Runs a GAQL query and returns a Pager object
"""

def __init__(self):
self.client = client
self.mcc_id = "XXXXXXXXXX"
self.search_accounts_query = """SELECT
customer_client.id,
customer_client.resource_name,
customer_client.descriptive_name,
customer_client.manager,
customer_client.applied_labels
FROM 
customer_client
WHERE
customer_client.manager = false 
AND customer_client.id IS NOT NULL 
AND customer_client.descriptive_name LIKE '%Search%'
AND customer.status = 'ENABLED'"""

@staticmethod
def run_gaql_query(query: str, customer_id) -> pagers.SearchPager:
"""runs GAQL query through Google Ads API
Args:
customer_id: customer ID being queried
query: the actual GAQL query being ran
Returns:
Returns a pagers.SearchPager response of the raw data
"""
return google_ads_service.search(
customer_id=customer_id,
query=query
)

def get_existing_search_accounts(self) -> dict:
"""runs GAQL query through Google Ads API

Returns:
Returns a dict of {internal_id, account_name}
"""
response = self.run_gaql_query(self.search_accounts_query, self.mcc_id)
return {row.customer_client.descriptive_name[-8:]: 
row.customer_client.descriptive_name for row in response}

gaql = GoogleQuery()
gaql.get_existing_search_accounts()

# cProfile Results from above code Tue May 16 13:31:28 2023   
 output_test.pstats

         991213 function calls (973122 primitive calls) in 10.099 seconds

   Ordered by: internal time
   List reduced from 6168 to 20 due to restriction <20>

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1    7.398    7.398    7.401    7.401 {method 'next_event' of 
'grpc._cython.cygrpc.SegregatedCall' objects} 

-- 
-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
Also find us on our blog:
https://googleadsdeveloper.blogspot.com/
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~

You received this message because you are subscribed to the Google
Groups "AdWords API and Google Ads API Forum" group.
To post to this group, send email to adwords-api@googlegroups.com
To unsubscribe from this group, send email to
adwords-api+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/adwords-api?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Google Ads API and AdWords API Forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to adwords-api+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/adwords-api/5d932590-ce73-41dd-85b9-e5364d051125n%40googlegroups.com.
  • Ex... Adam Walters
    • ... Adam Walters
      • ... 'Google Ads API Forum Advisor' via Google Ads API and AdWords API Forum

Reply via email to