import threading
from azure.storage.blob import BlockBlobService
def do_other_stuff():
print("so much stuff to do")
class ABlob:
def __init__(self, account_name, account_key, container_name, blob_name, file_path):
self.account_name = account_name
self.account_key = account_key
self.container_name = container_name
self.blob_name = blob_name
self.file_path = file_path
self.blob_service = BlockBlobService(account_name=self.account_name, account_key=self.account_key)
def get_blob(self):
download_thread = threading.Thread(
target=self.blob_service.get_blob_to_path,
args=(self.container_name, self.blob_name, self.file_path))
download_thread.start()
def get_blob_name(self):
print(self.blob_name)
first_blob = ABlob(account_name='account_name',
account_key='key',
container_name='container', blob_name='something.csv',
file_path='path')
first_blob.get_blob()
first_blob.get_blob_name()
do_other_stuff()
У меня есть BLOB-объекты Azure, которые необходимо загрузить и загрузить (не показано). Я не хочу ждать, пока они завершат свой процесс, поскольку у меня есть другие вещи, которые должны быть сделаны. Однако в какой-то момент мне нужно будет подтвердить, что они успешно загружены или загружены.
С моим текущим кодом я использовал библиотеку потоков. Если в процессе загрузки или выгрузки произошла ошибка, поток, обрабатывающий транзакцию, завершится с ошибкой. У меня нет возможности сообщить основной ветке завершения и статус завершения.
Что мне нужно сделать, чтобы получить статус get_blob
? Есть ли другая библиотека, которая имеет менее опасный способ справиться с этой ситуацией? Я ссылался на следующие темы, но не могу понять, как объединить их разные подходы.
Перехватить исключение потока в потоке вызывающего в Python
попытки многопроцессорного пула Python
Как вызвать асинхронную функцию, содержащуюся в классе
фоновая функция в Python