Python использует библиотеку расписания для загрузки файлов

#python #scheduled-tasks #scheduler #python-schedule

Вопрос:

У меня есть список идентификаторов, которые называются oaid, и я хочу, чтобы они загружались с понедельника по пятницу с полуночи до 6 вечера, но только в течение определенного периода времени в течение дня. Поскольку это список, я хочу, чтобы задание не начиналось снова, если оно уже было загружено.
Ниже, как я думал, но я не уверен, у вас есть какие-либо предложения?

 import schedule
from schedule import repeat
from more_itertools import chunked

def main():
  oaids = ['id1', 'id2', 'others..']
  for chunked_oaids in chunked(oaids, os.cpu_count()):
    schedule.every() 
      .monday 
      .to(5).days 
      .at('00:00:00') 
      .to(15).hours 
      .do(do_download_job, oaids=chunked_oaids)

def do_download_job(oaids):
  with ProcessPoolExecutor(os.cpu_count()) as ex:
    results = [ex.submit(download_and_upload, oaid, target_az_container, az_subfolder) for oaid in oaids]
 

Комментарии:

1. что плохого в том, что ты сделал?

2. Я создаю разные задания с разными идентификаторами, и мне кажется, что эти идентификаторы будут загружаться каждый день. Вместо этого я хочу, чтобы они загружались только один раз. Кроме того, я хочу, чтобы фрагмент идентификаторов загружался только в том случае, если первый фрагмент завершен. Есть идеи?

3. превратите догадки в факты. Посмотрим, что произойдет. Решите эту проблему, если это произойдет.

4. Тот факт, что вы используете schedule.every( указывает, что он будет перепланирован. Возможно, в пакете есть опция «один раз»?

5. @PaulCollingwood Да, потенциально я могу позвонить schedule.CanceJob , как только закончу. Просто беспокоюсь о том, является ли каждый запуск хронологическим и ожидает ли завершения предыдущего. Является fact ли объект библиотеки расписания объектом?