#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
ли объект библиотеки расписания объектом?