Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 尝试在Google PubSub python中创建主题订阅时出错_Python 3.x_Google Cloud Platform_Gcloud_Google Cloud Pubsub - Fatal编程技术网

Python 3.x 尝试在Google PubSub python中创建主题订阅时出错

Python 3.x 尝试在Google PubSub python中创建主题订阅时出错,python-3.x,google-cloud-platform,gcloud,google-cloud-pubsub,Python 3.x,Google Cloud Platform,Gcloud,Google Cloud Pubsub,我正在尝试使用python中的Google的pubsub_v1库创建一个主题订阅。我已经使用该库成功创建了一个主题(创建后我可以在云控制台中看到它)。但是,我在尝试创建订阅时遇到问题。我试图放弃这个解决方案,但无济于事。这是我的订阅代码: 从google.cloud导入pubsub_v1作为pubsub 主题名称='日志' sub_名称='logs consumer' 项目名称='我的项目'#有效的项目名称 subscriber=pubsub.SubscriberClient() 主题路径=订户

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

从google.cloud导入pubsub_v1作为pubsub
主题名称='日志'
sub_名称='logs consumer'
项目名称='我的项目'#有效的项目名称
subscriber=pubsub.SubscriberClient()
主题路径=订户。主题路径(项目名称、主题名称)
订阅路径=订阅方。订阅路径(项目名称、子名称)
#将订阅服务器包装在“with”块中,以自动调用close()
#完成后关闭基础gRPC通道。
与订户:
订阅=订阅服务器。创建订阅(
请求={“名称”:订阅路径,“主题”:主题路径}
)
无论何时运行此代码,都会出现以下错误:

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.
回溯(最近一次呼叫最后一次):
文件“/Users/zacharymcgrath/Library/Python/3.7/lib/Python/site packages/google/api\u core/grpc\u helpers.py”,第57行,错误为\u重新映射\u可调用
返回可调用函数(*args,**kwargs)
文件“/Users/zacharymcgrath/Library/Python/3.7/lib/Python/site packages/grpc/_channel.py”,第826行,在u调用中__
返回\u结束\u一元\u响应\u阻塞(状态、调用、错误、无)
文件“/Users/zacharymcgrath/Library/Python/3.7/lib/Python/site packages/grpc/_channel.py”,第729行,在一元响应中
raise\u InactiveRpcError(状态)
grpc.\u信道。\u不活动覆盖PCERROR:
上述异常是以下异常的直接原因:
回溯(最近一次呼叫最后一次):
文件“logger_consumer_GCP.py”,第28行,在
请求={“名称”:订阅路径,“主题”:主题路径}
文件“/Users/zacharymcgrath/Library/Python/3.7/lib/Python/site packages/google/cloud/pubsub_v1/_gapic.py”,第40行,在
fx=lambda self,*a,**kw:wrapped_fx(self.api,*a,**kw)35;noqa
文件“/Users/zacharymcgrath/Library/Python/3.7/lib/Python/site packages/google/pubsub\u v1/services/subscriber/client.py”,第526行,在create\u subscription中
响应=rpc(请求,重试=重试,超时=超时,元数据=元数据,)
文件“/Users/zacharymcgrath/Library/Python/3.7/lib/Python/site packages/google/api_core/gapic_v1/method.py”,第145行,在调用中__
返回包装函数(*args,**kwargs)
文件“/Users/zacharymcgrath/Library/Python/3.7/lib/Python/site packages/google/api\u core/retry.py”,第286行,在retry\u wrapped\u func中
on_错误=on_错误,
文件“/Users/zacharymcgrath/Library/Python/3.7/lib/Python/site packages/google/api\u core/retry.py”,第184行,在retry\u目标中
返回目标()
文件“/Users/zacharymcgrath/Library/Python/3.7/lib/Python/site packages/google/api\u core/grpc\u helpers.py”,第59行,错误为\u重新映射\u可调用
六、从(例外情况。从grpc错误(exc),exc)
文件“”,第3行,从
未找到或删除google.api_core.exceptions.InvalidArgument:400项目“项目:gcp-python-291817”。
我想可能是我的
project
gcloud变量发生了某种变化,库使用了环境变量,但我仔细检查了一下,结果是正确的。我不确定我在做什么,这与上面提到的问题不同。谢谢

更新

评论中的一些有用信息:

  • gcp-python-291817
    不是项目名称
  • 项目名称位于发布服务器和订阅服务器都从中读取的配置文件中。发布者从文件中读取项目名称并发布消息时没有任何问题
  • 我在这个名为
    gcp-python
    的项目中为一个VM实例配置了
    ssh
    ,但不久前被删除了
  • 清除gcloud缓存和gsutils缓存也没有解决该问题
参见,例如
订阅

主题|订阅名称不仅仅是简单的名称,而是以
project/
为前缀、项目ID的值等

topic\u name='projects/{project\u id}/topics/{topic}'。。。
订阅名称='projects/{project\u id}/subscriptions/{sub}'。。。
然后,只需按照文档中的代码进行操作:

subscriber.create\u订阅(
名称=订阅名称,主题=主题名称)
也许可以试试这个:

PROJECT=[[YOUR-PROJECT]]
gcloud项目列表\
--filter=projectid=${PROJECT}\
--format=“值(项目编号)”
[[VALUE]]
PROJECT
的值与您在代码中使用的值相同

你应该找回一个值

然后你可以:

gcloud发布子主题列表--project=${project}
gcloud pubsub订阅列表--project=${project}
工作样本: 创建项目,启用发布/订阅等

gcloud项目创建${PROJECT}
计费=$(gcloud beta计费帐户列表--format=“value(name)”)
gcloud beta计费项目链接${PROJECT}\
--账单账户=${billing}
gcloud服务支持pubsub.googleapis.com\
--项目=${project}
ROBOT=“测试仪”
电子邮件=“${ROBOT}@${PROJECT}.iam.gserviceaccount.com”
gcloud iam服务帐户创建${ROBOT}\
--项目=${project}
gcloud iam服务帐户密钥创建${PWD}/${ROBOT}.json\
--iam帐户=${EMAIL}\
--项目=${project}
gcloud项目添加iam策略绑定${PROJECT}\
--角色=角色/pubsub.editor\
--成员=服务帐户:${EMAIL}
蟒蛇3-m静脉
源venv/bin/激活
python3-mpip安装googlecloudpubsub
出口项目
导出GOOGLE_应用程序_凭据=${PWD}/tester.json
python3 main.py
以及:

导入操作系统
从google.cloud导入pubsub_v1
publisher=pubsub_v1.publisher客户端()
topic_name=“freddie”
topic\u path=publisher.topic\u path(os.getenv(“项目”),topic\u名称)
主题=发布者。创建主题(请求={“名称”:t
gcloud auth application-default login