2017-12-30 5 views
-1

나는 모니터하는 일부 도메인의 변화를 카운트하는 방법을 가지고 있습니다. 하루에 한 번만 변경 사항을 계산할 수 있도록 하루에 한 번만 실행하는 메소드가 필요합니다. 나는 파이썬에서 타이머를위한 좋은 구현을 찾을 수 없다. 제안 사항이 있으십니까?Python에 타이머 추가하기

def count_changes(self): 
    stamp = datetime.now() 
    upper_limit = stamp - timedelta(days=7) 
    lower_limit = stamp - timedelta(days=2) 

    nameservers = models.NameServer.query.all() 
    nameservers = [item.name for item in nameservers] 
    domains = models.Domain.query.all() 
    domains = [item.name for item in domains] 
    changes = [] 
    upper_limit_changes = [] 
    lower_limit_changes = [] 

    for ns in nameservers: 

     for domain in domains: 
      scans = models.Scan.query.filter_by(nameserver=ns, 
      domain=domain).all() 
      upper_limit_changes.extend(self.get_changes(scans, upper_limit)) 
      lower_limit_changes.extend(self.get_changes(scans, lower_limit)) 

    return upper_limit_changes, lower_limit_changes 
+0

안녕하세요, bash cron을 사용해 보셨습니까? 아니면 코드에서 일정을 잡으려는 특별한 이유가 있습니까? –

+0

나는이 방법을 매일 한 번씩 실행해야하고 코드에서 완료해야합니다. – Mindan

답변

0

여러 가지 방법이 있습니다. 그 중 일부는 this question에 문서화되어 있습니다. 수용 가능한 답변이 있지만 라이브러리 schedule (pip 설치 일정)을 사용하는 것이 좋습니다. 코드는 다음과 같습니다.

import schedule 
import time 

def job(t): 
    print "I'm working...", t 
    return 

schedule.every().day.at("01:00").do(job,'It is 01:00') 

while True: 
    schedule.run_pending() 
    time.sleep(60) # wait one minute 
+0

감사합니다. 시도해 보겠습니다 만, "이 질문"링크가 어디로가는 지 기억해주십시오. – Mindan

+0

링크가 수정되었습니다. 이 응답을 유용하게 찾은 경우 그것을 upvote하고 대답을 표시하십시오;) –

+0

조금 혼란스러워, 주어진 시간에 내 방법을 실행하려면 타이머를 얻을 전화를합니까? 저는 파이썬과 타이머에 새로운 것입니다. 나는 파이썬 3을 사용한다. – Mindan