Skip to content

Как работать с этим проектом

requirements

Единственная сторонняя библиотека, на которую есть ссылки в этом проекте - это pytest.

pip install pytest

Впрочем, если вы не будете запускать тесты, то и она вам не нужна

Встроенные тесты

Чтобы прогнать встроенные тесты, просто наберите в терминале (находясь в корне проекта)

pytest
Чтобы уточнить какие тесты вам нужны, а какие нет, можете отредактировать файл setup.cfg - раздел [tool:pytest].

Ваши функции

Создание Job

Если хотите, чтобы планировщик задач работал с какими-либо вашими функциями, то пакуйте функции и аргументы к ним в functools.partial. Эта обёртка обеспечивает максимальную простоту.

def my_function(a, b, c):
    ...
    return result

job_1 = Job(
    [functools.partial(my_function, 10, 'Hello', {'a': 5 })], 
     start_at=...,
    max_working_time=...,
    tries=...,
    dependencies=(..., ...)
)
functools.partial должен быть в списке (или кортеже) и быть единственным его аргументом.

Примеры создания Job смотрите в тестах (папка tests).

Создание и запуск планировщика

Затем создайте Schedule и по очереди добавьте в него каждую Job.

scheduler = Scheduler()
scheduler.schedule(job_1)
...
scheduler.schedule(job_n)
И затем запустите
scheduler.run()
scheduler.join()  # ждём конца всех работ

Остановка и перезапуск планировщика

Дальше если вы собираетесь прервать процессы с возможностью перезапуска когда угодно

scheduler.stop()

Теперь когда угодно вы можете сделать рестарт

scheduler.restart()
Технически рестарт осуществляется за счёт сохранённых бэкап-файлов в папке backup.