Python 정시 작업 APScheduler 설치 및 사용 분석

1.소개
APScheduler 는 Python 의 정시 작업 프레임 워 크 로 사용 하기에 매우 편리 하 다.날짜,고정 시간 간격,crontab 형식 을 기반 으로 하 는 작업 을 제공 하고 작업 을 지속 적 으로 수행 하 며 daemon 방식 으로 응용 을 실행 할 수 있 습 니 다.
2.APScheduler 네 가지 구성 요소
APScheduler 네 가지 구성 요 소 는 트리거(trigger),작업 저장 소(job store),실행 기(executor),스케줄 러(scheduler)이다.
트리거(trigger)
스케줄 링 논 리 를 포함 하여 모든 작업 은 다음 작업 이 실 행 될 지 결정 하 는 데 사용 되 는 트리거 가 있 습 니 다.그들 스스로 초기 설정 을 제외 하고 트리거 는 완전히 무상 태 이다
APScheduler 는 세 가지 내 장 된 trigger 가 있 습 니 다.
  • date:특정 시간 대 시전
  • interval:고정 시간 간격 트리거
  • cron:특정 시간 에 주기 적 으로 촉발
  • 작업 저장 소(job store)
    예 약 된 작업 을 저장 합 니 다.기본 작업 저장 소 는 작업 을 메모리 에 간단하게 저장 하고 다른 작업 저장 소 는 작업 을 데이터베이스 에 저장 합 니 다.작업 의 데 이 터 는 영구적 인 작업 저장 소 에 저장 할 때 직렬 화 되 고 불 러 올 때 반 직렬 화 된다 고 합 니 다.스케줄 러 는 같은 작업 저장 소 를 공유 할 수 없습니다.
    APScheduler 는 기본적으로 Memory JobStore 를 사용 하고 DB 저장 소 를 사용 하 는 방안 을 수정 할 수 있 습 니 다.
    실행 기(executor)
    작업 을 처리 하 는 실행 은 보통 작업 에서 제 정 된 호출 가능 한 대상 을 하나의 스 레 드 나 시내 로 제출 하여 진행 합 니 다.작업 이 완료 되면 실행 기 는 스케줄 러 에 게 알려 줍 니 다.
    가장 많이 사용 되 는 executor 는 두 가지 가 있 습 니 다.
  • ProcessPoolExecutor
  • ThreadPoolExecutor
  • 스케줄 러(scheduler)
    보통 응용 프로그램 에 스케줄 러 가 하나 밖 에 없 는데 응용 개발 자 들 은 작업 저장 소,스케줄 러,트리거 를 직접 처리 하지 않 는 반면 스케줄 러 는 이러한 처리 에 적합 한 인 터 페 이 스 를 제공 합 니 다.작업 저장 소 와 실행 기 를 설정 하면 스케줄 러 에서 작업 을 추가,수정,제거 할 수 있 습 니 다.
    2.설치$ pip install apscheduler다음 에 우 리 는 간단 한 몇 가지 예 를 살 펴 보 자.
    
    ===============interval:         ===============
    from apscheduler.schedulers.blocking import BlockingScheduler
    from datetime import datetime
    
    def job():
      print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
    #   BlockingScheduler
    sched = BlockingScheduler()
    sched.add_job(job, 'interval', seconds=5) 
    sched.start()
    
    ===============cron:           ===============
    import time
    from apscheduler.schedulers.blocking import BlockingScheduler
    
    def job(text):
      t = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
      print('{} --- {}'.format(text, t))
    
    scheduler = BlockingScheduler()
    #    22 ,   1        job   
    scheduler.add_job(job, 'cron', hour=17, minute='*/1', args=['job1'])
    #    22 23  25 ,     job   
    scheduler.add_job(job, 'cron', hour='22-23', minute='25', args=['job2'])
    
    scheduler.start()
    장식 기 scheduledjob()추가 방법
    
    import time
    from apscheduler.schedulers.blocking import BlockingScheduler
    
    scheduler = BlockingScheduler()
    
    @scheduler.scheduled_job('interval', seconds=5)
    def job1():
      t = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
      print('job1 --- {}'.format(t))
    
    @scheduler.scheduled_job('cron', second='*/7')
    def job2():
      t = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
      print('job2 --- {}'.format(t))
    
    scheduler.start()
    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기