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 [email protected]
To unsubscribe from this group, send email to
[email protected]
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 [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/adwords-api/5d932590-ce73-41dd-85b9-e5364d051125n%40googlegroups.com.