无法将消息发布到云发布子

问题描述

我在将 python 发布者部署到 google pub sub 时遇到问题。我正在本地 kubernetes 集群上通过 docker 运行该应用程序。我为应用程序创建了一个服务帐户,限制为 pub sub 管理员凭据。 key.json 与 app.py 位于同一文件

下面是app.py代码

    import time

from google.cloud import pubsub_v1
from google.oauth2 import service_account

credentials = service_account.Credentials. from_service_account_file('key.json')

# Todo(developer)
project_id = "myaccount"
topic_id = "mytopic "

publisher = pubsub_v1.PublisherClient(credentials=credentials)
topic_path = publisher.topic_path(project_id,topic_id)

futures = dict()

def get_callback(f,data):
    def callback(f):
        try:
            print(f.result())
            futures.pop(data)
        except:  # noqa
            print("Please handle {} for {}.".format(f.exception(),data))

    return callback

for i in range(10):
    data = str(i)
    futures.update({data: None})
    # When you publish a message,the client returns a future.
    future = publisher.publish(topic_path,data.encode("utf-8"))
    futures[data] = future
    # Publish failures shall be handled in the callback function.
    future.add_done_callback(get_callback(future,data))

# Wait for all the publish futures to resolve before exiting.
while futures:
    time.sleep(5)

print(f"Published messages with error handler to {topic_path}.")

这里是错误

[server]        debug_error_string = "{"created":"@1610925225.129746600","description":"Resolver transient failure","file":"src/core/ext/filters/client_channel/resolving_lb_policy.cc","file_line":219,"referenced_errors":[{"created":"@1610925225.129730400","description":"DNS resolution Failed for service: pubsub.googleapis.com:443","file":"src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc","file_line":377,"grpc_status":14,"referenced_errors":[{"created":"@1610925225.129633600","description":"C-ares status is not ARES_SUCCESS qtype=A name=pubsub.googleapis.com is_balancer=0: Timeout while contacting DNS servers","file":"src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc","file_line":287}]}]}"
[server] >
[server] 
[server] The above exception was the direct cause of the following exception:
[server] 
[server] Traceback (most recent call last):
[server]   File "/usr/local/lib/python3.8/site-packages/google/api_core/retry.py",line 184,in retry_target
[server]     return target()
[server]   File "/usr/local/lib/python3.8/site-packages/google/api_core/grpc_helpers.py",line 59,in error_remapped_callable
[server]     six.raise_from(exceptions.from_grpc_error(exc),exc)
[server]   File "<string>",line 3,in raise_from
[server] google.api_core.exceptions.ServiceUnavailable: 503 DNS resolution Failed for service: pubsub.googleapis.com:443
[server] 
[server] The above exception was the direct cause of the following exception:
[server] 
[server] Traceback (most recent call last):
[server]   File "/usr/local/lib/python3.8/site-packages/google/cloud/pubsub_v1/publisher/_batch/thread.py",line 263,in _commit
[server]     response = self._client.api.publish(
[server]   File "/usr/local/lib/python3.8/site-packages/google/pubsub_v1/services/publisher/client.py",line 569,in publish
[server]     response = rpc(request,retry=retry,timeout=timeout,Metadata=Metadata,)
[server]   File "/usr/local/lib/python3.8/site-packages/google/api_core/gapic_v1/method.py",line 145,in __call__
[server]     return wrapped_func(*args,**kwargs)
[server]   File "/usr/local/lib/python3.8/site-packages/google/api_core/retry.py",line 281,in retry_wrapped_func
[server]     return retry_target(
[server]   File "/usr/local/lib/python3.8/site-packages/google/api_core/retry.py",line 199,in retry_target
[server]     six.raise_from(
[server]   File "<string>",in raise_from
[server] google.api_core.exceptions.RetryError: Deadline of 120.0s exceeded while calling functools.partial(<function _wrap_unary_errors.<locals>.error_remapped_callable at 0x7fdec24c9310>,topic: "projects/myaccount /topics/mytopic"

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)