croniter
_ _
___ _ __ ___ _ __ (_) |_ ___ _ __
/ __| '__/ _ \| '_ \| | __/ _ \ '__|
| (__| | | (_) | | | | | || __/ |
\___|_| \___/|_| |_|_|\__\___|_|
base 시각으로부터 cron 스케줄에 일치하는 datetime을 구할 수 있는 라이브러리이다.
간단히 사용 방법을 정리해 본다.
설치 및 import
Python 기본 라이브러리가 아니기 때문에 별도로 설치가 필요하다.
pip install croniter
croniter 패키지로부터 필요한 모듈을 import 하여 사용한다.
from croniter import croniter
기본 사용법
기본적으로 crontier 라이브러리는 생성자와 get_next 함수를 이용하여 사용한다.
croniter는 start_time으로부터 '분 시 초 일 요일'로 이루어진 cron_format을 따라 iterate 되므로 get_next 함수를 반복적으로 사용하여 cron_format에 일치하는 시각을 구할 수 있다. get_next 함수에는 반환받을 데이터 타입을 float 또는 datetime으로 지정한다.
from datetime import datetime
from croniter import croniter
cron_format = '0 0 * * *'
iter = croniter(cron_format, datetime.now())
print(iter.get_next(datetime))
print(iter.get_next(datetime))
print(iter.get_next(datetime))
만약 역으로 start_time 이전의 시각의 구할 때는 get_prev 함수를 사용한다.
from datetime import datetime
from croniter import croniter
cron_format = '0 0 * * *'
iter = croniter(cron_format, datetime.now())
print(iter.get_prev(datetime))
print(iter.get_prev(datetime))
print(iter.get_prev(datetime))
기간 내 일치하는 시각 목록
range 함수와 유사하게 croniter_range 함수를 사용하여, 기간 내 cron_format과 일치하는 시각을 찾는다.
from datetime import datetime, timedelta
from croniter import croniter
from croniter import croniter_range
end_date = datetime.now()
start_date = end_date - 10 * timedelta(days=1)
for dt in croniter_range(start_date, end_date, cron_format):
print(dt)
generator로 반환되어 list 등으로 사용하기 위해서는 형 변환이 필요하다.
from datetime import datetime, timedelta
from croniter import croniter
from croniter import croniter_range
cron_format = '0 0 * * *'
end_date = datetime.now()
start_date = end_date - 10 * timedelta(days=1)
print(type(croniter_range(start_date, end_date, cron_format)))
참고 문서
https://pypi.org/project/croniter/
https://github.com/kiorky/croniter