상세 컨텐츠

본문 제목

19. schedule 모듈

Python

by evaseo 2021. 5. 7. 17:41

본문

1.    특정한 작업(함수)를 주기적으로 실행/작업하기 위하여 사용하는 스케줄러

2.    리눅스 OS 환경의 crontab, 윈도우 OS 환경의 작업 스케줄러와 같은 역할

3.    실행할 주기, 날짜, 시간, 요일 등을 지정하여 원하는 시점에 작업을 실행하거나 원하는 주기로 반복 실행하도록 구현가능

4.    리눅스의 crontab, 윈도우의 작업 스케줄러와 차이점:  어플리케이션 레벨에서 스케줄러가 수행

5.    사용 예시

(1)     업데이트 확인

(2)     바이러스 검사

(3)     신규 게시글 확인

(4)     일정시간마다 자동저장

(5)     자동백업

(6)     매수, 매도 거래가 실시간으로 생성

6.    schedule.jobs = []: Scheduler에 등록된 Job 리스트를 보관하는 변수

7.    함수

(1)     schedule.every(interval=1)

1)       설정한 intreval 주기로 지정한 Function을 호출

2)       schedule.every().xxx.func(): 스케쥴 정의

     xxx에 사용 가능한 지정자: second, seconds, minute, minutes, hour, hours, day, days, week, weeks, monday, tuesday, wednesday, thursday, friday, saturday, sunday

        func()에서 사용가능한 함수: tag(*tags), at(time_str), to(latest), do(job_func), run()

(2)     schedule.run_pending()

1)       실행 예약된 모든 작업을 실행

2)       함수를 1초 주기로 호출하여 등록된 스케쥴 Job의 계획을 확인하고 계획(주기 또는 시점)에 해당되는 Job을 수행

(3)     schedule.run_all(delay_seconds=0)

1)       실행 예약에 관계없이 모든 작업을 일괄 실행

2)       모든 Job이 일괄 실행될 때 작업 간의 지연 시간을 delay_seconds를 이용하여 설정가능

(4)     schedule.clear(tag=None)

1)       예악된 Job Job 리스트에서 모두 삭제

2)       tag가 지정되어 있을 경우에는 지정된 태그의 Job만 삭제

(5)     schedule.cancel_job(job): 예약된 작업의 스케쥴을 취소

(6)     schedule.next_run(): 다음 실행될 작업의 날짜를 반환

(7)     schedule.idle_seconds()

1)       Job이 수행될 다음 계획(next_Run)까지 남은 시간을 반환

2)       양수: 남은 시간

3)       음수는 지난 시간

# pip install schedule
# Schedule Library imported 
import schedule 
import time 

# Functions setup 
def sec(): 
    print("1초에 한번씩") 
def min(): 
    print("10분에 한번씩") 
def hour(): 
    print("1시간에 한번씩") 
def day():
    print('하루에 한번씩')
def zero():
    print('00:00')
def func():
    print('5~10')
def mon():
    print('monday')
def half_hour():
    print('35분')
# Task scheduling 
# After every 1second sec() is called. 
schedule.every().second.do(sec) 

# After every 10mins min() is called. 
schedule.every(10).minutes.do(min) 

# After every hour hour() is called. 
schedule.every().hour.do(hour) 

# Every day at 12am or 00:00 time zero() is called. 
schedule.every().day.at("00:00").do(zero) 

# After every 5 to 10mins in between run func() 
schedule.every(5).to(10).minutes.do(func) 

# Every monday mon() is called 
schedule.every().monday.do(mon) 

# Loop so that the scheduling task 
# keeps on running all time. 
while True: 

    # Checks whether a scheduled task 
    # is pending to run or not 
    schedule.run_pending() 
    time.sleep(1) ​
실행결과

 

[참고] schedule · PyPI

[참고] Python 실시간 요청 자동화 & scheduler (velog.io)

 

'Python' 카테고리의 다른 글

21. 데이터 시각화  (0) 2021.05.07
20. Selenium  (0) 2021.05.07
18. json 모듈  (0) 2021.05.07
17. BeautifulSoup  (0) 2021.05.06
16. pandas - (2) DataFrame  (0) 2021.05.02

관련글 더보기