これは質問に直接答えるものではありませんが、最初に達成したいのは、(たとえば) 10 分ごとに Python コードを実行することだけである場合は、cronを使用してこれを実装することをお勧めします。
これまでのところ、起動時に何らかの形で開始されるスクリプトがあると思います。主に、無限ループ、メイン プロシージャ、および次の実行時まで待機するコンポーネントで構成されます。たとえば、次のようにします。
""" my_first_daemon.py
does something everytime the datetime minute part is fully divisible by ten
"""
while True:
# do something at 00,10,20,30,40,50 (minutes) every hour
print "Hello World!"
# wait until the next execution time
wait_until_next_ten_minute_time()
これが実際に当てはまる場合は、スクリプトのメイン セクションを別のスクリプトに移動することをお勧めします。たとえば、次のようにします。
""" my_first_cronjob.py
is run by cron everytime the datetime minute part is fully divisible by ten
"""
# do something at 00,10,20,30,40,50 (minutes) every hour
print "Hello World!"
先に進み、crontab に追加します (コマンドcrontab -e
を使用して、スクリプトを実行するユーザーの crontab にエントリを追加します。manpage も参照してください)。たとえば、次のようにします。
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * command to be executed
# example entry:
# (divide minute-star by 10 to get it run every 10 minutes)
*/10 * * * * python /path/to/my_first_cronjob.py
編集後、crontab: installation new crontabのようなメッセージが表示されたら完了です。待って、うまくいくか見てみましょう。
以下の点にも注意してください。
- スクリプトの stdout および stderr への出力は、終了後にメールで送信されます。
tail -f /var/mail/moooeeeep
(ユーザー名を指定してください)をご覧ください。これらのメールを取得するように Thunderbird を構成して、検査を容易にすることもできます。
- 対応するウィキペディアのページは、詳細について非常に優れた情報源です。
- スクリプトの独立した実行間で状態情報を保持する必要がある場合は、構成ファイルを使用してこの状態情報を保存することを検討してください。たとえば、pickle、shelve、sqliteなどを使用します。