首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ServiceUnavailable: 503服务的DNS解析失败: firestore.googleapis.com

问ServiceUnavailable: 503服务的DNS解析失败: firestore.googleapis.com
EN

Stack Overflow用户
提问于 2021-09-28 12:34:46
回答 1查看 283关注 0票数 0

我试图在我的项目中使用Python代码(在Jupyter Notebook中)访问Google的Firestore,但由于某种原因,Python程序永远不会结束。我还试图在Firestore中创建一个文档,但是我得到了这个错误:

代码语言:javascript
复制
ServiceUnavailable: 503 DNS resolution failed for service: firestore.googleapis.com

我在Firestore中创建了一个服务帐户(ServiceAccount.json包含这些设置)。这是我的代码:

代码语言:javascript
复制
import firebase_admin

from firebase_admin import credentials
from firebase_admin import firestore

cred = credentials.Certificate('ServiceAccount.json')
firebase_admin.initialize_app(cred)
db = firestore.client()
db.collection('company').add({'name': 'Test'})

只有最后一条语句失败。这也会被返回:

代码语言:javascript
复制
_InactiveRpcError                         Traceback (most recent call last)
C:\ProgramData\Anaconda3\lib\site-packages\google\api_core\grpc_helpers.py in error_remapped_callable(*args, **kwargs)
     65         try:
---> 66             return callable_(*args, **kwargs)
     67         except grpc.RpcError as exc:

C:\ProgramData\Anaconda3\lib\site-packages\grpc\_channel.py in __call__(self, request, timeout, metadata, credentials, wait_for_ready, compression)
    945                                       wait_for_ready, compression)
--> 946         return _end_unary_response_blocking(state, call, False, None)
    947 

C:\ProgramData\Anaconda3\lib\site-packages\grpc\_channel.py in _end_unary_response_blocking(state, call, with_call, deadline)
    848     else:
--> 849         raise _InactiveRpcError(state)
    850 

_InactiveRpcError: <_InactiveRpcError of RPC that terminated with:
    status = StatusCode.UNAVAILABLE
    details = "DNS resolution failed for service: firestore.googleapis.com"
    debug_error_string = "{"created":"@1632831473.221000000","description":"Resolver transient failure","file":"src/core/ext/filters/client_channel/client_channel.cc","file_line":1356,"referenced_errors":[{"created":"@1632831473.221000000","description":"DNS resolution failed for service: firestore.googleapis.com","file":"src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc","file_line":202,"grpc_status":14,"referenced_errors":[{"created":"@1632831473.221000000","description":"OS Error","file":"src/core/lib/iomgr/resolve_address_windows.cc","file_line":93,"os_error":"The specified class was not found.\r\n","syscall":"getaddrinfo","wsa_error":10109}]}]}"
>

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

ServiceUnavailable                        Traceback (most recent call last)
C:\ProgramData\Anaconda3\lib\site-packages\google\api_core\retry.py in retry_target(target, predicate, sleep_generator, deadline, on_error)
    189         try:
--> 190             return target()
    191
...
EN

回答 1

Stack Overflow用户

发布于 2021-09-29 15:05:12

您使用的是Windows吗?如果你是,我相信你已经命中了bug。虽然c-ares解析器问题已修复,但您可能正在使用较旧的软件包。

您可以通过检查已配置的环境变量来解决此问题。如果您在某个Jupyter Notebook单元格中运行此命令:

代码语言:javascript
复制
import os
os.environ

你应该得到一个很长的变量列表。看看GRPC_DNS_RESOLVER是什么:

代码语言:javascript
复制
environ{'SHELL': '/bin/bash',
        'OS_IMAGE_FAMILY': 'debian-10',
        'CONDA_EXE': '/opt/conda/bin/conda',
        '_CE_M': '',
        'DL_ANACONDA_HOME': '/opt/conda',

根据documentation的说法

GRPC_DNS_RESOLVER声明要使用哪个DNS解析器。如果gRPC是使用c-ares支持构建的,则默认值为ares。否则,此环境变量的值将被忽略。可用的DNS解析器包括: ares (除iOS、Android或Node之外的大多数平台上的默认解析器)-一个基于c-are库原生的DNS解析器-一个基于getaddrinfo()的DNS解析器,创建一个新线程来执行名称解析

然后,可以像这样将GRPC_DNS_RESOLVER设置为native:

代码语言:javascript
复制
os.environ['GRPC_DNS_RESOLVER'] = 'native'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69361854

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档