问题描述
我在将 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 (将#修改为@)