Ошибка: не удалось разрешить 503 DNS в Google Translate API, но ТОЛЬКО при выполнении файла Python через терминал - PullRequest
0 голосов
/ 23 марта 2020

У меня странная проблема при использовании Google Translate API с JSON ключом авторизации. Я могу запустить файл без каких-либо проблем непосредственно в моем редакторе выбора (VSCode). Нет ошибок

Но когда я запускаю тот же файл через терминал, файл запускается вплоть до загрузки учетных данных Google Translate с диска. Вызов затем выдает ниже сообщение об ошибке.

Поскольку это происходит только при запуске файла из терминала, я считаю, что эту ошибку трудно устранить.

Цель состоит в том, чтобы этот файл собирал данные и переведите некоторые поля с помощью служб Google, затем сохраните данные в базе данных.

Ниже приведено сообщение об ошибке:

    Error: 503 DNS resolution failed
    Traceback (most recent call last):
      File "/home/MY-USER-NAME/anaconda3/lib/python3.6/site-packages/google/api_core/grpc_helpers.py", line 57, in error_remapped_callable
      File "/home/MY-USER-NAME/anaconda3/lib/python3.6/site-packages/grpc/_channel.py", line 690, in __call__
      File "/home/MY-USER-NAME/anaconda3/lib/python3.6/site-packages/grpc/_channel.py", line 592, in _end_unary_response_blocking
    grpc._channel._Rendezvous: <_Rendezvous of RPC that terminated with:
            status = StatusCode.UNAVAILABLE
            details = "DNS resolution failed"
            debug_error_string = "{"created":"@1584629013.091398712","description":"Failed to pick subchannel","file":"src/core/ext/filters/client_channel/client_channel.cc","file_line":3934,"referenced_errors":[{"created":"@1584629013.091395769","description":"Resolver transient failure","file":"src/core/ext/filters/client_channel/resolving_lb_policy.cc","file_line":262,"referenced_errors":[{"created":"@1584629013.091394954","description":"DNS resolution failed","file":"src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc","file_line":370,"grpc_status":14,"referenced_errors":[{"created":"@1584629013.091389655","description":"C-ares status is not ARES_SUCCESS: Could not contact DNS servers","file":"src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc","file_line":244,"referenced_errors":[{"created":"@1584629013.091380513","description":"C-ares status is not ARES_SUCCESS: Could not contact DNS servers","file":"src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc","file_line":244}]}]}]}]}"
    >

Это соответствующая часть моего кода:

  1. Выделенный файл CRON (я использую эту двухэтапную настройку во многих других проектах без каких-либо проблем)
#! anaconda3/bin/python

import os 
os.chdir(r'/home/MY-USER-NAME/path-to-project')

import code-file
Файл кода (простой скрипт .py)

[...]

from google.oauth2 import service_account
from google.cloud import translate

key_path = 'path-to-file/credentials.json'
credentials = service_account.Credentials.from_service_account_file(
key_path, scopes=['https://www.googleapis.com/auth/cloud-platform'])

def translate_to_en(contents, credentials=None, verbose=False, use_pinyin=False):

            [...]

            client = translate.TranslationServiceClient(credentials=credentials)  
            parent = client.location_path(credentials.project_id, 'global')

            [...]

            response = client.translate_text(
              parent=parent,
              contents=[contents],
              mime_type='text/plain',  # mime types: text/plain, text/html
              target_language_code='en-US')

            [...]


[...]

for c in trans_cols:
    df[f'{c}__trans'] = df[c].apply(lambda x: translate_to_en(contents=x, credentials=credentials, verbose=False))

[...]

Если у кого-то есть хорошая идея, чтобы решить эту проблему, ваша помощь будет высоко оценена.

1 Ответ

0 голосов
/ 23 марта 2020

Похоже, проблема относится к ошибке grp c в github. Для разрешения имен gRP C вы можете следовать , это сделать c на github.

...