[python] pytz를 사용하여 특정 시간대에서 현재 시간을 기반으로 반복 작업 예약하기
특정 시간대에서 현재 시간을 기반으로 반복 작업을 예약하고 싶다면, pytz
라이브러리를 사용할 수 있습니다. pytz
는 Python에서 시간대를 다루기 위한 편리한 기능을 제공하는 라이브러리입니다.
1. pytz 설치하기
먼저, pytz
를 설치해야 합니다. 다음 명령어를 사용하여 pytz
를 설치할 수 있습니다.
pip install pytz
2. 특정 시간대로 시간 설정하기
반복 작업을 예약하기 위해, 먼저 특정 시간대로 시간을 설정해야 합니다. pytz
를 사용하여 특정 시간대를 선택할 수 있습니다. 다음 예제는 ‘Asia/Seoul’ 시간대로 시간을 설정하는 방법을 보여줍니다.
from datetime import datetime
import pytz
# 현재 시간을 가져온다
now = datetime.now()
# 특정 시간대로 시간을 설정한다
timezone = pytz.timezone('Asia/Seoul')
localized_time = now.astimezone(timezone)
# 설정한 시간을 출력한다
print(localized_time)
3. 반복 작업 예약하기
특정 시간대로 시간을 설정한 후에는, 반복 작업을 예약할 수 있습니다. 예를 들어 매 시간에 특정 작업을 수행하고 싶다면, datetime
객체의 replace
메서드를 사용하여 시간을 변경하고 작업을 수행하는 코드를 작성할 수 있습니다.
from datetime import datetime, timedelta
import pytz
# 반복 작업 예약을 위해 특정 시간대로 시간을 설정한다
timezone = pytz.timezone('Asia/Seoul')
# 현재 시간을 가져온다
now = datetime.now().astimezone(timezone)
# 작업을 예약할 시간을 설정한다
scheduled_time = now.replace(minute=0, second=0, microsecond=0) + timedelta(hours=1)
# 작업 예약을 확인한다
print(f"작업이 예약되었습니다. 예약 시간: {scheduled_time}")
# 작업을 수행하는 코드를 작성한다
def do_task():
print("작업을 수행합니다.")
# 작업 예약 시간이 되면 작업을 수행한다
while datetime.now().astimezone(timezone) < scheduled_time:
pass
do_task()
위 코드는 매 시간 정각마다 do_task
함수를 실행하는 예제입니다. scheduled_time
변수에는 다음 시간대의 정각 시간이 예약되어 있으며, 이 시간이 되면 do_task
함수가 실행됩니다.
do_task
함수에 원하는 작업을 작성하고, 필요에 따라 작업 예약 주기를 변경할 수 있습니다.
참고 자료
- pytz 공식 문서: https://pythonhosted.org/pytz/
- datetime 모듈 공식 문서: https://docs.python.org/3/library/datetime.html