Как добавить вторую функцию в пул многопроцессорных потоков в python 2.7 - PullRequest
0 голосов
/ 01 мая 2019

Со списком "file_paths" у меня есть настройка ThreadPool для одновременной загрузки каждого файла на сервер с помощью функции "start_file_upload".

Случай, в котором я пытаюсь решить, как добавить вторую функцию к этому с именем «refresh_token».

Я настроил эту функцию для обновления токена аутентификации для используемого мной API, но не могу понять, как отслеживать время истечения, используя «self.expiry_time», которое генерируется, когда auth_tokenвпервые создан.Затем я хочу, чтобы он обновил токен, если запуск не завершен и время приближается к expiry_time.

Функция «refresh_token ()» настроена с помощью оператора if else, чтобы проверить, находится ли текущее время в пределах 5 минут после истечения срока действия, и просто продолжить, если токен все еще активен и будет дляследующие 5 минут, но я не знаю, как вызывать эту функцию каждые 5 минут вместе с потоками загрузки файлов

import os
from multiprocessing.pool import ThreadPool
from contextlib import closing

def main_func(self):
    file_paths = []
    for file_path in [f for f in os.listdir(self.file_dir)
                      if f.endswith('.csv')]:
        file_paths.append(self.file_dir + file_path)

    with closing(ThreadPool(processes=len(file_paths))) as pool:
        results = pool.map(self.start_file_upload, file_paths)
        pool.terminate()

Я также хотел бы отметить, что я переключился с использования модуля "Threading" надля этого я использовал модуль «multiprocessing», потому что при переключении я видел увеличение времени обработки результатов на 100%, поэтому я бы не стал возвращаться к использованию этого модуля, если это возможно.

TLDR: у меня есть ThreadPool ссписок результатов, используемых в качестве аргументов для одной функции, и необходимо добавить вторую функцию, которая будет выполняться каждые 5 минут, пока первая функция не будет выполнена со всеми завершениями пула.

...