Synology DS1621+でタスクスケジューラを利用してPythonを実行する。

前回、SSH接続でPythonを実行して正常に動作したので、今度はタスクスケジューラを利用して、定期的な日時で、データ取得したいと思います。

では、コントロールパネル→タスクスケジューラを開きます。

作成→予約タスク→ユーザー指定のスクリプトを選択します。

全般タブからタスクに名前を付けます。

適当な名前でいいと思います。後で見て分かるようにしておくと良いでしょう。

続いてユーザーを選択します。

root、admin、guest、各ユーザー名の中から選択します。

注意点は、SSH接続で行った環境と同じにすることです。

今回、自分は自分のユーザー名でSSH接続して、Pythonを実行しました。

なので、同じ環境にするために自分のユーザー名を選択します。

スケジュールタブで自分の行いたいスケジュールを設定します。

参考にこんな感じで設定できます。

続いてタスク設定です。

メール設定をしておきましょう。

正常に終了すれば良いのですが、異常終了したときはエラーメッセージが無いと困ります。

なので、下のチェックの「スクリプトが異常終了した場合のみ詳細な実行情報を送信」にチェックします。

「コマンドを実行」にSSHで行ったことを入力します。


export PATH="$PATH:/volume1/@appstore/py3k/usr/local/bin"
cd ./Document/TOTO/TOTO_2021/01_Python
python3 01.py

前回書きました、コマンドをそのまま書きます。

案外、こうやって書いてみると簡単に思えますが、調べてもここまで書かれているサイトが無かったのですとね。

使い方が良く分からなかったので、トライ&エラーを何回も繰り返しました。ww

最後に時間設定による実行方法ではなく、マニュアルでの実行方法(今すぐ実行して見たい)です。

設定したスケジュールを待っていても仕方ないので、即時、実行する方法です。

自分で作成したタスクを選択して、実行ボタンを押すと即時実行しますので、結果、メールが来なければ成功したことになります。

案外実行してみると、メールにエラーメッセージの詳細が書かれているので、デバッグも分かりやすいのではないかと思います。

以上、タスクスケジューラーの設定でした。

追記 2022/08/18

この記事に関連して、DSM7バージョンでの方法を書きました。(下の記事)

記事はDockerの使い方という表題ですが、DSM7でのタスクスケジューラーの使い方も記載してあります。

というか、DSM7だとDocker使えば簡単です。

ただし、Synologyの型番に「+」の付いた機種の限り、Dockerインストール可能という落ちが付きます。

Docker無しの場合、DSM7でのPythonの使い方が良く分からないのですよね。