0

job.py次のコードを持つ があります。

import datetime
import logging
import sys
import os

from apscheduler.scheduler import Scheduler
from src.extractors.pExtractor import somejob

def run_job():
    start = datetime.datetime.now()
    logging.debug('Proposal extraction job starting')
    somejob.main()
    end = datetime.datetime.now()
    duration = end - start
    logging.debug('job completed , took ' + str(duration.seconds) + ' seconds')

def main():
    logging.basicConfig(filename='/tmp/pExtractor.log', level=logging.DEBUG,format='%(levelname)s[%(asctime)s]: %(message)s')
    sched = Scheduler()
    sched.start()
    sched.add_interval_job(run_job, minutes=2)

if __name__ == '__main__':
    main()
  • コマンド プロンプトでこれを実行すると、すぐに終了します。

INFO[2012-04-03 13:31:02,825]: 0 コア スレッドと 20 の最大スレッドでスレッド プールを開始しました INFO[2012-04-03 13:31:02,827]: スケジューラを開始しました31:02,827]: ジョブ「run_job (トリガー: cron[minute='2'], next run at: 2012-04-03 14:02:00)」をジョブ ストア「デフォルト」に追加しました INFO[2012-04-03 13:31:02,828]: スレッド プールをシャットダウンしています

  • これをデーモンとして実行するにはどうすればよいですか?
4

1 に答える 1

0

以下のように書いてくださいmain()

def main():
    [... your_code_as_in_your_question ...]
    while (True):
        pass

さらに、 PEP 3143を考慮しても問題ありません。

于 2012-10-02T20:50:35.313 に答える