Ошибка SSL при использовании многопроцессорной обработки в Python с сервисами Google Cloud - PullRequest
0 голосов
/ 04 октября 2019

В моем приложении на Flask я использую многопроцессорную обработку в пакете файлов - пользователь загружает ZIP-файл со многими файлами PDF - после загрузки для каждого файла в базе данных создается новая сущность, затем запускается поток ивызвать многопроцессорный пул, чтобы каждый файл запускал процесс, взаимодействующий со службами Google Cloud, такими как Google Storage и Google Datastore.

import threading
import multiprocessing
import sys

class ProcessMulti(threading.Thread):
    def __init__(self, files_ids):
        self.files_ids = files_ids
        super().__init__()

    def run(self):
        with multiprocessing.Pool(processes=multiprocessing.cpu_count()) as pool:
            for i, _ in enumerate(pool.imap_unordered(process_one, self.files_ids), 1):
                sys.stderr.write('\rdone {0:%}'.format(i/len(self.files_ids)))

def process_one(file_id):

    print("Process started by {}".format(file_id))
    file = File(file_id)
    file.process()
    print("Process finished by {}".format(file_id))

    return file.id

Внутри объекта File существует тривиальное взаимодействие с Google Datastore и Google Storage - дляПример перечитывания файлов из корзины или изменения данных. Локально все работает гладко ... но при работе с использованием SSL-соединения при попытке запуска процесса выдается следующая ошибка, и ничего не происходит вообще:

Process started by 5377634535997440
E1004 15:49:32.711329522   32255 ssl_transport_security.cc:476] Corruption detected.
E1004 15:49:32.711356181   32255 ssl_transport_security.cc:452] error:100003fc:SSL routines:OPENSSL_internal:SSLV3_ALERT_BAD_RECORD_MAC
E1004 15:49:32.711361146   32255 secure_endpoint.cc:208]     Decryption error: TSI_DATA_CORRUPTED

Любой знает, что является причиной этой ошибки? Я провел некоторое исследование и обнаружил некоторые ошибки, связанные с перегрузкой сокета SSL ... но я понятия не имею, какие действия исправить или альтернативы многопроцессорной обработке с аналогичной производительностью. Спасибо.

...