
私はLinuxサーバー上でPythonプログラムを実行しており、いくつかの外部データに基づいてxx
数分または数時間後に再実行する必要があります。
午前6時に実行し、午前7時に再実行する必要があるとします。その後、午前 7 時に何かを確認し、15 時 45 分に再実行し、翌日午前 2 時 5 分に、翌日午前 4 時 5 分に再実行する必要があります。
ご覧のとおり、実行する必要がある場合は事前定義されたロジックがなく、実行時に定義する必要があります。
私が知っている唯一のジョブ予約メカニズムは、ジョブをcrontab
実行せずにジョブを追加する方法を知りませんcrontab -e
。この方法はcrontab
反復操作に適しているようです。私の場合は、crontab
ジョブを追加して再度削除します。一度後に新しいものを追加します。
私が考えることができる唯一のことは、次の実行日をテキストファイルに設定し、タスクがcrontab
毎分プログラムを実行する時間であることを確認することです。
答え1
Python-crontabモジュールは有望に見えます。タスクを簡単に追加して削除します。
しかもスレッド @stackoverflowより便利なアイデアとリンクがあります。
答え2
crontab
定期的に繰り返す作業に使用する必要があります。別のオプションはat
。このユーティリティを使用すると、後で一度だけ実行したいタスクをスケジュールできます。
-script で .link ページpython
にコマンドを追加できる必要があり、-page は開始に十分な情報を提供する必要があります。at
man
@Michelのコメントによると、これは次のとおりです。
newruntime = (datetime.datetime.now() + datetime.timedelta(minutes=5)).strftime("%H:%M %d.%m.%Y")
command = 'echo " python mainprog.py" | at ' + newruntime
os.system(command)
答え3
する時間・睡眠()あなたのためではありませんか?私の言うことは:sleep()を待つ時間(秒)を渡してからスクリプトの実行を再開することができないことです(おそらくループの最後で条件付きスリープを実行することによって)。他の提案の一部に必要な外部依存関係の数が減ります。