Я пишу систему, которая в основном загружает некоторые данные в облако. Эти данные состоят из двух частей.
- raw_data - весь каталог
- config - соответствующий файл csv
Как только я загружаю raw_data (локальный компьютер в облако Хранилище), я извлекаю соответствующую конфигурацию для этого запуска (с моего локального компьютера) и загружаю ее в облачное хранилище.
Проблема в том, что иногда raw_data доступна, но конфигурация задерживается.
Как только я загружаю raw_data и проверяю, доступен ли конфиг, я использую следующую логику c:
У меня есть dict, my_runs
print(my_runs)
дает {'k1': 'val1', 'k2': 'val2', 'k3': 'val3'}
Где k1, k2, k3: run1, run2, run3 и val1, val2, val3: location1, location2, location3.
Я делаю для l oop более my_runs
csv_exists = False
attempts = 0
for run,loc in my_runs.items():
while not csv_exists:
if os.path.isdir(loc):
upload_to_cloud()
elif not os.path.isdir(loc) and attempts == 2:
email_me()
attempts += 1
sleep(1800)
else:
attempts+=1
sleep(1800)
Как видите, если csv недоступен, я сплю два раза по 30 минут каждый, затем отправляю электронное письмо, затем продолжаю спать (так как конвейер задерживается, пока у меня не будет конфигурации. csv)
Проблема здесь в том, что если я на run1
, смотрю в location1
и нахожусь в тупике до location1
заполнено, run2
и run3
также ждут без проверки наличия конфигурации.
Как я могу изменить этот код, чтобы запустить его для -l oop как многопроцессорный , чтобы я мог одновременно проверить файлы конфигурации во всех местах? Загрузите доступные элементы и подождите, пока нет?
Я не могу понять, как реализовать multiprocessing
или concurrent.features
в a для l oop.
Любая помощь или руководство будет высоко ценится!