В моем приложении на 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 ... но я понятия не имею, какие действия исправить или альтернативы многопроцессорной обработке с аналогичной производительностью. Спасибо.