Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x SSLError:[SSL:解密\u失败\u或\u坏记录\u MAC]解密失败或坏记录MAC_Python 3.x_Ubuntu 16.04_Pygsheets - Fatal编程技术网

Python 3.x SSLError:[SSL:解密\u失败\u或\u坏记录\u MAC]解密失败或坏记录MAC

Python 3.x SSLError:[SSL:解密\u失败\u或\u坏记录\u MAC]解密失败或坏记录MAC,python-3.x,ubuntu-16.04,pygsheets,Python 3.x,Ubuntu 16.04,Pygsheets,我有一个python脚本,它在windows服务器上运行得很好,但在Ubuntu 16.04.5上运行时会抛出一个SSLError异常 我已经使用pygsheets连接到谷歌表单 import pygsheets from oauth2client.service_account import ServiceAccountCredentials scope = [ 'https://spreadsheets.google.com/feeds', 'https:/

我有一个python脚本,它在windows服务器上运行得很好,但在Ubuntu 16.04.5上运行时会抛出一个SSLError异常

我已经使用
pygsheets
连接到谷歌表单

import pygsheets
from oauth2client.service_account import ServiceAccountCredentials

scope = [
        'https://spreadsheets.google.com/feeds',
        'https://www.googleapis.com/auth/drive'
         ]

credentials01 = ServiceAccountCredentials.from_json_keyfile_name('creds01.json', scope)
credentials02 = ServiceAccountCredentials.from_json_keyfile_name('creds02.json', scope)

file01 = pygsheets.authorize(credentials=credentials01)
file02 = pygsheets.authorize(credentials=credentials02)
wb01 = file01.open('Database System 2')
wb02 = file02.open('Database System 2')

if __name__ == '__main__':
    manager = multiprocessing.Manager()
    output_dfs = manager.list()
    new_dfs_dict = manager.dict()
    for l in main_list:
        for i in range(0, len(l[0]), 5):
            processes = []
            ids_sublist = []
            for j in range(i, i + 5):
                try:
                    ids_sublist.append(l[0][j])
                except:
                    pass
            for ID in ids_sublist:
                processes.append(multiprocessing.Process(target=fetch_data, args=(ID, start_date, end_date, new_dfs_dict, output_dfs)))
            for p in processes:
                p.start()
            for p in processes:
                p.join()

        for ID in l[0]:
            if not l[1].empty:
                cols_list = list(l[2][ID].columns)
                cols_list.remove('Type')
                cols_list[1:1] = ['Type']
                l[2][ID] = l[2][ID][cols_list]
                l[2][ID].update(new_dfs_dict[ID])
                l[2][ID] = pd.merge(l[2][ID], new_dfs_dict[ID])
            else:
                l[2][ID] = new_dfs_dict[ID]
        ready_to_set_df = pd.DataFrame()
        for ID in l[2]:
            ready_to_set_df = pd.concat([ready_to_set_df, l[2][ID]], sort=False)
            output_sheet = wb01.worksheet_by_title(l[3])            
            output_sheet.clear()
            output_sheet.set_dataframe(ready_to_set_df.fillna(0), 'A1')

    output_df = pd.DataFrame(columns=bank_portal_data_header)
    for df in output_dfs:
        output_df = output_df.append(df)
    try:
        data_sheet = wb02.worksheet_by_title(end_date)
        data_df = data_sheet.get_as_df(has_header=True)
        output_df = data_df[bank_portal_data_header].append(output_df)
        output_df = output_df.drop_duplicates(keep=False)
        data_sheet.clear()
        data_sheet.set_dataframe(output_df, 'A1', copy_head=True)
    except:
        data_sheet = wb02.add_worksheet(end_date)
        data_sheet.set_dataframe(output_df, 'A1', copy_head=True)
它在
数据表.clear()处抛出SSLError


奇怪的是脚本在Windows服务器上运行得非常好。谢谢

我将尝试更新
ca证书
。这些信息来自:


你得到答案了吗?在使用多线程方法时,我遇到了一个非常类似的错误。您可以在问题中添加异常堆栈跟踪吗@未知者
# first make a directory in which to store the CAcert certificate files.
sudo mkdir /usr/local/share/ca-certificates/cacert.org 
# Download the root certificates from the --> http://www.cacert.org
sudo wget -P /usr/local/share/ca-certificates/cacert.org http://www.cacert.org/certs/root.crt http://www.cacert.org/certs/class3.crt
# update certificate bundle
sudo update-ca-certificates