2010-12-28 17 views
0

私はPython関数を持っていて、毎月最後の日に関数を実行したいと思います。python - 毎月最終日に関数を実行する方法は?

どうすればいいですか?

+4

これは非常にプラットフォームに依存しています...そして、それはPythonの機能ではありません。たとえば、linuxの場合は、cron – Falmarri

答えて

3

これは、cronジョブまたは同様のスケジューリングアプリケーションの使用を必要とします。 http://en.wikipedia.org/wiki/Cron

#!/bin/bash 

TODAY=`/bin/date +%d` 
TOMORROW=`/bin/date +%d -d "1 day"` 

# See if tomorrow's day is less than today's 
if [ $TOMORROW -lt $TODAY ]; then 
     exit 0 
fi 

exit 1 

は、今、私たちはあなたが設定するための引数LASTDAYとコマンドラインツールでschtasksを使用することができますWindowsを使用している場合はcrontab -e

12 0 * * * last-day-of-month.sh && /usr/bin/python /location/of/my/python/script 

によってアクセスすることができ、あなたのcrontab(に次の行を追加することができます月の最後の日に発生するタスクMore info here

+0

を使用して、Pythonの関数を教えてください。私はcrontabとschtaskを使いたくないので – samy

+0

私の最後の編集を見てください:)! –

+0

どうすれば可能でしょうか?特定の日付であれば、日付をチェックしてPythonプログラムを実行するデーモンプロセスを実行する必要がありますか? "pythonでやる"という唯一の方法は、pythonプロセスをデーモン自体として使うことです。これは、オペレーティングシステムがツールを提供しているかどうか、率直に言えません。 –

1

もしあなたがPythonの解決策を望むなら、celeryを見ることができます。

0

特定の時刻にコードを実行する「Pythonの関数」はありません。それを行う唯一の方法は、これを行うのすべての時間で常にの機能を実行することです。これは次のようになります:

import calendar 
import datetime 
import time 

def called_last_day(): 
    print("Hark! It's the last day of the month!") 

def running_all_the_time(): 
    while True: 
     today = datetime.date.today() 
     if today.day == calendar.month_range(today.year, today.month): 
      called_last_day() 
     time.sleep(3600) # Wait for an hour 

あなたはそれを行うことができますが、それは少しばかりです。代わりにcronとschtaskを使用してください。本当に。

関連する問題