Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

google.api_core.exceptions.MethodNotImplemented: 501 GRPC target method can't be resolved #897

Open
fespinasse opened this issue Nov 18, 2024 · 1 comment
Labels
bug Something isn't working triage New issue; requires attention

Comments

@fespinasse
Copy link

Describe the bug:

Hello,

I'm new at Google API, and I was trying to test KeywordPlanIdeaService.
I try to follow the example provided in your doc (https://developers.google.com/google-ads/api/docs/keyword-planning/generate-keyword-ideas?hl=fr#python), removing stuff about which I don't know values to give.

But I get this error:
google.api_core.exceptions.MethodNotImplemented: 501 GRPC target method can't be resolved.

Steps to Reproduce:

Here is the final code:

from google.ads.googleads.client import GoogleAdsClient
import json

class ApiGoogleAds:
CREDENTIALS_FILE = "config/google-ads-credentials.json"
API_KEY = "..." # Api_key in google console for public data
credentials = None
client = None

def __init__(
    self,
):
    with open(self.CREDENTIALS_FILE, "r") as outfile:
        self.credentials = json.load(outfile)

    self.client = GoogleAdsClient.load_from_storage(self.CREDENTIALS_FILE)

def get_keyword_ideas(self, keywords: str = "", url: str = ""):
    keyword_plan_idea_service = self.client.get_service("KeywordPlanIdeaService")
    keyword_plan_network = (
        self.client.enums.KeywordPlanNetworkEnum.GOOGLE_SEARCH_AND_PARTNERS
    )

    if not (keywords or url):
        raise ValueError(
            "At least one of keywords or page URL is required, "
            "but neither was specified."
        )

    request = self.client.get_type("GenerateKeywordIdeasRequest")
    request.customer_id = self.credentials["login_customer_id"]
    request.include_adult_keywords = False
    request.keyword_plan_network = keyword_plan_network

    if keywords and url:
        request.keyword_and_url_seed.url = url
        request.keyword_and_url_seed.keywords.extend(keywords)
    elif keywords:
        request.keyword_seed.keywords.extend(keywords)
    elif url:
        request.url_seed.url = url

    keyword_ideas = keyword_plan_idea_service.generate_keyword_ideas(
        request=request
    )

    for idea in keyword_ideas:
        competition_value = idea.[keyword_idea_metrics.competition.name](http://keyword_idea_metrics.competition.name/)
        print(
            f'Keyword idea text "{idea.text}" has '
            f'"{idea.keyword_idea_metrics.avg_monthly_searches}" '
            f'average monthly searches and "{competition_value}" '
            "competition.\n"
        )

if name == "main":
...

And then, my testing script :

python -m scripts.test_google_ads

from crawlers.api.api_google_ads import ApiGoogleAds

apiAds = ApiGoogleAds()
apiAds.get_keyword_ideas(keywords="bottes en cuir")

Expected behavior:

No error, or clear params/config error if I missed some params.

Client library version and API version:
Client library version: Python 3.9.18
Google Ads API version: google-ads==21.3.0

Request/Response Logs:

And when I run it, I have the following exception:
Request made: ClientCustomerId: 2416036531, Host: googleads.googleapis.com, Method: /google.ads.googleads.v14.services.KeywordPlanIdeaService/GenerateKeywordIdeas, RequestId: None, IsFault: True, FaultMessage: GRPC target method can't be resolved.
Traceback (most recent call last):
File "/Projects/data/venv/lib/python3.9/site-packages/google/api_core/grpc_helpers.py", line 75, in error_remapped_callable
return callable_(*args, **kwargs)
File "/Projects/data/venv/lib/python3.9/site-packages/grpc/_interceptor.py", line 277, in call
response, ignored_call = self._with_call(
File "/Projects/data/venv/lib/python3.9/site-packages/grpc/_interceptor.py", line 332, in _with_call
return call.result(), call
File "/Projects/data/venv/lib/python3.9/site-packages/grpc/_channel.py", line 438, in result
raise self
File "/Projects/data/venv/lib/python3.9/site-packages/grpc/_interceptor.py", line 315, in continuation
response, call = self._thunk(new_method).with_call(
File "/Projects/data/venv/lib/python3.9/site-packages/grpc/_interceptor.py", line 343, in with_call
return self._with_call(
File "/Projects/data/venv/lib/python3.9/site-packages/grpc/_interceptor.py", line 332, in _with_call
return call.result(), call
File "/Projects/data/venv/lib/python3.9/site-packages/grpc/_channel.py", line 438, in result
raise self
File "/Projects/data/venv/lib/python3.9/site-packages/grpc/_interceptor.py", line 315, in continuation
response, call = self._thunk(new_method).with_call(
File "/Projects/data/venv/lib/python3.9/site-packages/grpc/_interceptor.py", line 343, in with_call
return self._with_call(
File "/Projects/data/venv/lib/python3.9/site-packages/grpc/_interceptor.py", line 329, in _with_call
call = self._interceptor.intercept_unary_unary(
File "/Projects/data/venv/lib/python3.9/site-packages/google/ads/googleads/interceptors/exception_interceptor.py", line 99, in intercept_unary_unary
self._handle_grpc_failure(response)
File "/Projects/data/venv/lib/python3.9/site-packages/google/ads/googleads/interceptors/exception_interceptor.py", line 71, in _handle_grpc_failure
raise self._get_error_from_response(response)
File "/Projects/data/venv/lib/python3.9/site-packages/grpc/_interceptor.py", line 315, in continuation
response, call = self._thunk(new_method).with_call(
File "/Projects/data/venv/lib/python3.9/site-packages/grpc/_channel.py", line 1178, in with_call
return _end_unary_response_blocking(state, call, True, None)
File "/Projects/data/venv/lib/python3.9/site-packages/grpc/_channel.py", line 1004, in _end_unary_response_blocking
raise _InactiveRpcError(state) # pytype: disable=not-instantiable
grpc._channel._InactiveRpcError: <_InactiveRpcError of RPC that terminated with:
status = StatusCode.UNIMPLEMENTED
details = "GRPC target method can't be resolved."
debug_error_string = "UNKNOWN:Error received from peer ipv6:%5B2a00:1450:4006:804::200a%5D:443 {created_time:"2024-11-15T14:43:51.013252+01:00", grpc_status:12, grpc_message:"GRPC target method can't be resolved."}"

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "/usr/local/Cellar/[email protected]/3.9.18_1/Frameworks/Python.framework/Versions/3.9/lib/python3.9/runpy.py", line 197, in _run_module_as_main
return _run_code(code, main_globals, None,
File "/usr/local/Cellar/[email protected]/3.9.18_1/Frameworks/Python.framework/Versions/3.9/lib/python3.9/runpy.py", line 87, in _run_code
exec(code, run_globals)
File "/Projects/data/scripts/test_google_ads.py", line 5, in
apiAds.get_keyword_ideas(keywords="bottes en cuir")
File "/Projects/data/crawlers/api/api_google_ads.py", line 70, in get_keyword_ideas
keyword_ideas = keyword_plan_idea_service.generate_keyword_ideas(
File "/Projects/data/venv/lib/python3.9/site-packages/google/ads/googleads/v14/services/services/keyword_plan_idea_service/client.py", line 455, in generate_keyword_ideas
response = rpc(
File "/Projects/data/venv/lib/python3.9/site-packages/google/api_core/gapic_v1/method.py", line 131, in call
return wrapped_func(*args, **kwargs)
File "/Projects/data/venv/lib/python3.9/site-packages/google/api_core/grpc_helpers.py", line 77, in error_remapped_callable
raise exceptions.from_grpc_error(exc) from exc
google.api_core.exceptions.MethodNotImplemented: 501 GRPC target method can't be resolved.

I tried to look a bit if I found similar troubles reports, but either it's not matching mine, or I misunderstand things...

Could you please help me a bit ?
Sorry if my knowledge level about Google tools, even just development skills, are not very good, or even my english level.

Anything else we should know about your project / environment:

Thanks for the help you will provide.

@fespinasse fespinasse added bug Something isn't working triage New issue; requires attention labels Nov 18, 2024
@felipefcunica
Copy link

Same behavior here! Need a fix!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working triage New issue; requires attention
Projects
None yet
Development

No branches or pull requests

2 participants