1

python-daemon 1.6を使用 してAPSchedulerを使用して、タスクのリストを管理するのに問題があります。

(スケジューラーは、特定の選択された時間(秒の解像度)で定期的にそれらを実行する必要があります)

動作中(Ctrl + Cを押すまで)、

from apscheduler.scheduler import Scheduler
import logging
import signal

def job_function():
    print "Hello World"

def init_schedule():
        logging.basicConfig(level=logging.DEBUG)
        sched = Scheduler()
        # Start the scheduler
        sched.start()

        return sched

def schedule_job(sched, function, periodicity, start_time):
        sched.add_interval_job(job_function, seconds=periodicity, start_date=start_time)

if __name__ == "__main__":

    sched = init_schedule()
    schedule_job(sched, job_function, 120, '2011-10-06 12:30:09')
    schedule_job(sched, job_function, 120, '2011-10-06 12:31:03')

    # APSScheduler.Scheduler only works until the main thread exits
    signal.pause()
    # Or
    #time.sleep(300)

サンプル出力:

INFO:apscheduler.threadpool:0コアスレッドと20最大スレッドでスレッドプールを開始しましたINFO:apscheduler.scheduler:Schedulerが開始しましたDEBUG:apscheduler.scheduler:実行するジョブを探していますDEBUG:apscheduler.scheduler:ジョブなし。ジョブが追加されるまで待機INFO:apscheduler.scheduler:ジョブストア"default"にジョブ"job_function(trigger:interval [0:00:30]、next run at:2011-10-06 18:30:39)"を追加しましたINFO:apscheduler.scheduler:ジョブ "job_function(trigger:interval [0:00:30]、next run at:2011-10-06 18:30:33)"をジョブストア "default"に追加しましたDEBUG:apscheduler.scheduler:実行するジョブを探していますDEBUG:apscheduler.scheduler:次のウェイクアップの期限は2011-10-06 18:30:33(10.441128秒)

python-daemonでは、 出力は空白です。DaemonContextがプロセスを正しく生成しないのはなぜですか?

編集-作業中

python-daemon sourceを読んだ後、DaemonContextにstdoutとstderrを追加し、最終的に何が起こっているのかを知ることができました。

def job_function():
    print "Hello World"
    print >> test_log, "Hello World"

def init_schedule():
    logging.basicConfig(level=logging.DEBUG)
    sched = Scheduler()
    sched.start()

    return sched

def schedule_job(sched, function, periodicity, start_time):
    sched.add_interval_job(job_function, seconds=periodicity, start_date=start_time)

if __name__ == "__main__":

    test_log = open('daemon.log', 'w')
    daemon.DaemonContext.files_preserve = [test_log]

    try:
           with daemon.DaemonContext():
                   from datetime import datetime
                   from apscheduler.scheduler import Scheduler
                   import signal

                   logging.basicConfig(level=logging.DEBUG)
                   sched = init_schedule()

                   schedule_job(sched, job_function, 120, '2011-10-06 12:30:09')
                   schedule_job(sched, job_function, 120, '2011-10-06 12:31:03')

                   signal.pause()

    except Exception, e:
           print e
4

1 に答える 1

1

python-daemonについてはよくわかりませんが、test_loginjob_function()は定義されていません。init_schedule()を参照する場所でも同じ問題が発生しますSchedule

于 2011-10-06T16:54:25.990 に答える