1. ホーム
  2. python

[解決済み] Pythonスクリプトを1時間ごとに正確に実行するスケジューリング

2023-07-13 19:22:57

質問

質問する前に Cronジョブおよびタスクスケジューラ このスクリプトは Windows と Linux で使用されるため、エンド ユーザーが完了するのを待つよりも、これを行うコード化されたメソッドを持つことを好みます。

タスクをスケジュールするために使用できる Python 用のライブラリはありますか? 私は 1 時間に 1 回関数を実行する必要がありますが、1 時間に 1 回スクリプトを実行して .sleep を使用すると、スクリプトや関数の実行に固有の遅延のために、時間の経過とともに前日とは異なる時間に 1 時間に 1 回実行されることになります。

とは何ですか? ベスト 関数を一日の特定の時間に実行するようにスケジュールする方法(1回以上) なしで Cron JobやTask Schedulerでスケジューリングすることなく?

あるいは、これが可能でない場合、私はあなたの意見も欲しいです。

AP Schedulerは私のニーズにぴったりでした。

バージョン 3.0

import datetime
import time
from apscheduler.scheduler import Scheduler

# Start the scheduler
sched = Scheduler()
sched.daemonic = False
sched.start()

def job_function():
    print("Hello World")
    print(datetime.datetime.now())
    time.sleep(20)

# Schedules job_function to be run once each minute
sched.add_cron_job(job_function,  minute='0-59')

を出す。

>Hello World
>2014-03-28 09:44:00.016.492
>Hello World
>2014-03-28 09:45:00.0.14110

バージョン3.0

(以下、Animesh Pandeyの回答より)

from apscheduler.schedulers.blocking import BlockingScheduler

sched = BlockingScheduler()

@sched.scheduled_job('interval', seconds=10)
def timed_job():
    print('This job is run every 10 seconds.')

@sched.scheduled_job('cron', day_of_week='mon-fri', hour=10)
def scheduled_job():
    print('This job is run every weekday at 10am.')

sched.configure(options_from_ini_file)
sched.start()

どのように解決するのですか?

多分これは助けることができる。 高度なPythonスケジューラ

これは彼らのドキュメントにある小さなコードの一部です。

from apscheduler.schedulers.blocking import BlockingScheduler

def some_job():
    print "Decorated job"

scheduler = BlockingScheduler()
scheduler.add_job(some_job, 'interval', hours=1)
scheduler.start()