google.api_core.exceptions.ServiceUnavailable: 503 failed to connect to all addresses

164 views Asked by At

The code runs perfectly in Google Colab, yet an errors in Jupyter Notebook. The first error was DeadlineExceeded: 504 Deadline Exceeded Then I asigned my company PROXY os.environ['HTTPS_PROXY'] = proxy and got new error google.api_core.exceptions.ServiceUnavailable: 503 failed to connect to all addresses; last error: UNKNOWN: ipv4:192.168.152.200:8080: Ssl handshake failed: SSL_ERROR_SSL: error:1000007d:SSL routines:OPENSSL_internal:CERTIFICATE_VERIFY_FAILED

To be able to check changes I ran another code without "os.environ['HTTPS_PROXY'] = proxy" first of all:

import httplib2
http = httplib2.Http() 
resp, content = http.request(
    'https://www.googleapis.com/robot/v1/metadata/x509/pythonaccess%***.iam.gserviceaccount.com', 'GET')
print(resp)
print(content)

The error was (TimeoutError: [WinError 10060]). Then I wrote "os.environ['HTTPS_PROXY']" = proxy" for that new code. Another error ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1002)

But when I added http = httplib2.Http(disable_ssl_certificate_validation=True) the code ran perfectly. Unfortunately I have no idea how to dissable ssl certificate validation in client = BetaAnalyticsDataClient() for google api (google.analytics.data_v1beta.types), but I am sure an issue is in ssl. Tried to add paths for os.environ['GRPC_DEFAULT_SSL_ROOTS_FILE_PATH'], os.environ['CURL_CA_BUNDLE'] even os.environ['GOOGLE_API_USE_CLIENT_CERTIFICATE']. Without result.

Please, help!

There are proxy and antivirus in company.

Full request:

import pandas as pd
import numpy as np
 
from google.analytics.data_v1beta import BetaAnalyticsDataClient
from google.analytics.data_v1beta.types import DateRange
from google.analytics.data_v1beta.types import Dimension
from google.analytics.data_v1beta.types import Metric
from google.analytics.data_v1beta.types import RunReportRequest
from google.analytics.data_v1beta.types import OrderBy
 
os.environ['https_proxy'] = "http://192.168.152.200:8080"
proxy = "http://192.168.152.200:8080"
os.environ['https_proxy'] = proxy
os.environ['HTTPS_PROXY'] = proxy
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = 'D:\***\scripts\credentials\***f.json'

property_id = '***'
client = BetaAnalyticsDataClient()
 
def format_report(request):
    response = client.run_report(request)
 
    # Row index
    row_index_names = [header.name for header in response.dimension_headers]
    row_header = []
    for i in range(len(row_index_names)):
        row_header.append([row.dimension_values[i].value for row in response.rows])
 
    row_index_named = pd.MultiIndex.from_arrays(np.array(row_header), names = np.array(row_index_names))
    # Row flat data
    metric_names = [header.name for header in response.metric_headers]
    data_values = []
    for i in range(len(metric_names)):
        data_values.append([row.metric_values[i].value for row in response.rows])
 
    output = pd.DataFrame(data = np.transpose(np.array(data_values, dtype = 'f')),
                          index = row_index_named, columns = metric_names)
    return output
 
request = RunReportRequest(
        property='properties/'+property_id,
        dimensions=[Dimension(name="month"),
                    Dimension(name="sessionMedium")],
        metrics=[Metric(name="averageSessionDuration"),
                 Metric(name="activeUsers")],
        order_bys = [OrderBy(dimension = {'dimension_name': 'month'}),
                    OrderBy(dimension = {'dimension_name': 'sessionMedium'})],
        date_ranges=[DateRange(start_date="2023-01-01", end_date="today")],
    )
format_report(request)
0

There are 0 answers