Warm tip: This article is reproduced from serverfault.com, please click

其他-尝试在Google PubSub python中创建主题订阅时出错

(其他 - Error in trying to create a topic subscription in Google PubSub python)

发布于 2020-12-05 02:07:26

我正在尝试使用pubsub_v1python中的Google创建对主题的订阅我已经使用该库成功创建了一个主题(创建后可以在云控制台中看到它)。但是我在尝试创建订阅时遇到问题。我想解决这个问题,但无济于事。这是我的订阅代码:

from google.cloud import pubsub_v1 as pubsub

topic_name = 'logs'
sub_name = 'logs-consumer'
project_name = 'my-project' # valid project name

subscriber = pubsub.SubscriberClient()
topic_path = subscriber.topic_path(project_name, topic_name)
subscription_path = subscriber.subscription_path(project_name, sub_name)

# Wrap the subscriber in a 'with' block to automatically call close() to
# close the underlying gRPC channel when done.
with subscriber:

    subscription = subscriber.create_subscription(
        request={"name": subscription_path, "topic": topic_path}
    )

每当我运行此代码时,都会出现以下错误:

Traceback (most recent call last):
  File "/Users/zacharymcgrath/Library/Python/3.7/lib/python/site-packages/google/api_core/grpc_helpers.py", line 57, in error_remapped_callable
    return callable_(*args, **kwargs)
  File "/Users/zacharymcgrath/Library/Python/3.7/lib/python/site-packages/grpc/_channel.py", line 826, in __call__
    return _end_unary_response_blocking(state, call, False, None)
  File "/Users/zacharymcgrath/Library/Python/3.7/lib/python/site-packages/grpc/_channel.py", line 729, in _end_unary_response_blocking
    raise _InactiveRpcError(state)
grpc._channel._InactiveRpcError: <_InactiveRpcError of RPC that terminated with:
    status = StatusCode.INVALID_ARGUMENT
    details = "Project 'project:gcp-python-291817' not found or deleted."
    debug_error_string = "{"created":"@1607133732.705528000","description":"Error received from peer ipv6:[2607:f8b0:400f:801::200a]:443","file":"src/core/lib/surface/call.cc","file_line":1062,"grpc_message":"Project 'project:gcp-python-291817' not found or deleted.","grpc_status":3}"
>

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

Traceback (most recent call last):
  File "logger_consumer_GCP.py", line 28, in <module>
    request={"name": subscription_path, "topic": topic_path}
  File "/Users/zacharymcgrath/Library/Python/3.7/lib/python/site-packages/google/cloud/pubsub_v1/_gapic.py", line 40, in <lambda>
    fx = lambda self, *a, **kw: wrapped_fx(self.api, *a, **kw)  # noqa
  File "/Users/zacharymcgrath/Library/Python/3.7/lib/python/site-packages/google/pubsub_v1/services/subscriber/client.py", line 526, in create_subscription
    response = rpc(request, retry=retry, timeout=timeout, metadata=metadata,)
  File "/Users/zacharymcgrath/Library/Python/3.7/lib/python/site-packages/google/api_core/gapic_v1/method.py", line 145, in __call__
    return wrapped_func(*args, **kwargs)
  File "/Users/zacharymcgrath/Library/Python/3.7/lib/python/site-packages/google/api_core/retry.py", line 286, in retry_wrapped_func
    on_error=on_error,
  File "/Users/zacharymcgrath/Library/Python/3.7/lib/python/site-packages/google/api_core/retry.py", line 184, in retry_target
    return target()
  File "/Users/zacharymcgrath/Library/Python/3.7/lib/python/site-packages/google/api_core/grpc_helpers.py", line 59, in error_remapped_callable
    six.raise_from(exceptions.from_grpc_error(exc), exc)
  File "<string>", line 3, in raise_from
google.api_core.exceptions.InvalidArgument: 400 Project 'project:gcp-python-291817' not found or deleted.

我以为我的projectgcloud变量可能有所更改,并且库使用了环境变量,但是我仔细检查了一下,它是正确的。我不太确定自己在做什么,这与上面提到的问题不同。谢谢。

更新

评论中的一些有用信息:

  • gcp-python-291817 不是项目名称
  • 项目名称位于发布者和订阅者均可读取的配置文件中。从文件中读取项目名称并发布消息时,发布者没有任何问题
  • 我在ssh名为的项目中为VM实例配置了一个配置gcp-python,但前一阵子将其删除
  • 清除gcloud缓存和gsutils缓存也无法解决问题
Questioner
Zach
Viewed
0
Zach 2020-12-06 00:53:37

我发现了问题。我跑了

gcloud auth application-default login  

并确保将GOOGLE_APPLICATION_CREDENTIALS其指向新的凭据json文件,并且该文件可以正常工作。我一定在某个时候弄乱了凭证文件。谢谢你的帮助!