4

メインタスクを毎日午前 6 時に実行したいと考えています。しかし、テスト目的で、間隔を 5 秒に設定しました。問題は、発火しないように見えることです。maintask メソッドに到達することのないブレーク ポイントがあり、コンソールに何も出力されません。走っていないとします。

ETA: 私のコードは、ブロックしているため停止する scheduler.start() に到達します。メインタスクを 5 秒で開始する必要がありますが、開始されません。

Python のバージョンは 2.7、apscheduler のバージョンは 3.0 です。

WindowsとDebianで同じ結果を実行しました。

これが私のコードです。

from apscheduler.schedulers.blocking import BlockingScheduler
import datetime


def maintask():
    print("blah")


def main():

    scheduler = BlockingScheduler()

    print("Scheduling Tasks")
    start_time = (datetime.datetime.now()).replace(hour=6, minute=0, second=0, microsecond=0)
    scheduler.scheduled_job(maintask, 'interval', id="MainTaskid", name="mainTask", start_date=start_time, seconds=5, misfire_grace_time=60)
    print("Tasks Scheduled")
    print("Running Tasks")
    scheduler.start()
    print("Good Bye")
    return 0


if __name__ == "__main__":
    main()
4

1 に答える 1

3

問題は、scheduled_job代わりに を使用していることですadd_job

ユーザーガイドが説明しているように、主scheduled_jobにデコレータとして使用することを意図しており、「アプリケーションの実行時に変更されないジョブを宣言するのに便利」であり、後者はジョブを追加する「最も一般的な方法」です。

この特定のケースでは、問題はadd_jobスケジューラをscheduled_job強制的に起動させ、起動させないことであると私は信じています。明日の午前 6 時までではなく、起動時に実行するようにチェックします。

いずれにせよ、変更するだけでadd_job問題は解決します。

于 2014-10-21T23:42:44.110 に答える