2010-12-28 4 views
0

나는 파이썬 스케쥴을 사용하여 매달 마지막 날에 실행되는 기능을 스케줄하고 싶다.python - 매월 말일에 실행할 함수를 예약하는 방법은 무엇입니까?

누구나 나를 도울 수 있습니까? 파이썬 sched 및 crontab을

import datetime, calendar 
today = datetime.date.today() 
if calendar.monthrange(today.year, today.month)[1] != today.day: 
    exit() 

다른 파이썬 별 일정에 대해 얘기하지 않는 한, 같은 리그에없는 : 그것은 calendar.monthrange를 사용하여 달의 마지막 날 경우의 crontab에

+0

아마도 당신이 찾고있는 것이 cron과 같습니다. – ykatchou

+0

sched는 cron과 같은 스케줄링에 사용됩니다. – samy

+0

OS 특정 작업 스케줄러를 사용하여 함수를 포함하는 Python 스크립트를 실행하도록 구성 할 수 있습니다. 이전 작업을 수행하는 방법은 사용중인 OS 및 작업 스케줄러에 따라 다릅니다. 'sched' 모듈은 이런 종류의 일을하기 위해 설계되지 않았습니다. – martineau

답변

1

실행 일상 및 확인 . Windows에는 비슷한 스케줄러가 있거나 cygwin crontab을 설치할 수 있습니다.

시스템 전체 작업 스케줄러가없는 이상한 플랫폼에 있다면 위의 테스트와 time.sleep (24 * 60 * 60) 초 또는 그와 비슷한 것을 실행하는 무한 루프를 남길 수 있습니다.

+0

os 관련 스케줄러 (cron과 같은)가 하루에 한 번 필요하면, 스케줄러를 사용하여 달? – Tomas

+0

@Tomas : AFAIK, 표준 crontab에는 달의 마지막 날에 실행할 구문이 없습니다. 첫날 0시 00 분은 쉬우 며, 마지막 날 23시 59 분 59.99999시에 뛰는 것과 거의 같습니다. –

1

마지막 날의 날짜에 다음 날짜의 날짜 값이 현재 값보다 작다는 속성이 있습니다.

오늘 날짜부터 끝날까지의 일 수를 확인하십시오. 단서로 위에 나열된 속성을 사용하십시오. 세부 정보를 찾으려면 datetime 모듈을 사용하십시오.

  1. 현재 일 0에서 시작하여 각 연속적인 매일의 높은 값을 산출하는 함수 적는다. 이것은 귀하의 time.time 호출과 비슷하지만 매일 사용합니다.

  2. 하루에 잠들 수있는 함수 def mydaydelay (num)를 작성하십시오.

지금, 여기에서 중요한 부분은 timefunc가 전화했을 때 어떤 anyfunction가 값을 반환하고 귀하의 경우, 그것은 mydaycount되며 delayfunc는 mydaydelay 될 것입니다 될 수

class sched.scheduler(timefunc, delayfunc) 

입니다.

그리고 나서 월말 일 수와 함께 schduled 오브젝트를 호출하여 함수를 함수로 사용할 수 있습니다. 프로그램에 대한

scheduler.enterabs(time, priority, action, argument) 

거친 윤곽은 다음과 같이 될 것이다.

import sched 
import datetime 

def mydaycount(): 
    yield int_days 

def mydaydelay(n): 
    sleep_for_days(n) 

scheduler = sched.scheduler(mydaycount, mydaydelay) 

def print_event(name): 
    print 'EVENT:', name 

n_days_to_last_day = 3 # This should be your calculate value 

scheduler.entertabs(n_days_to_last_day, 1, print_event, ('last day',)) 

scheduler.run() 
+0

덕분에 나는 – samy

+0

캘린더를 시도 할 것입니다. 월간 (http://docs.python.org/library/calendar.html)을보십시오. –

+0

@Paulo : 메모 주셔서 감사합니다. monthrange()는 직접적인 값을 줄 수 있지만, 위의 것은 확실히 캘린더 모듈을 사용하여 쉽게 계산할 수 있습니다. –

관련 문제